簡體   English   中英

如果進程(文件)由外部程序使用Python打開,該如何關閉?

[英]How to close a process (file) if it was opened by an external program, using Python?

我正在從python寫入文件,如果文件在某個進程中打開,則python會引發錯誤。 為了清楚起見,我正在寫入一個excel文件,如果已經打開,我希望將其關閉。

這是下面我用來寫入文件的代碼-

writer = pd.ExcelWriter('file_Output.xlsx', engine='xlsxwriter')
file.to_excel(writer,index=False, sheet_name='Sheet1')

如果文件-file_Output.xlsx已在excel中打開,則拋出以下錯誤。

Traceback (most recent call last):
  File "pythonclose.py", line 311, in <module>
    writer.save()
  File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\io\excel.py", line 1952, in save
    return self.book.close()
  File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36\lib\site-packages\xlsxwriter\workbook.py", line 306, in close
    self._store_workbook()
  File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36\lib\site-packages\xlsxwriter\workbook.py", line 655, in _store_workbook
    allowZip64=self.allow_zip64)
  File "C:\Users\Abhinav\AppData\Local\Programs\Python\Python36\lib\zipfile.py", line 1082, in __init__
    self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'file_Output.xlsx'

如果文件是由外部程序(在這種情況下為MS Excel)打開的,則該文件的文件句柄或控件由該程序控制。 Python無法控制該文件,因此無法關閉/編輯該文件。 但是,如果您具有文件的進程ID,則可以通過其他方式(例如,在Windows中甚至使用Python使用taskkill)殺死該進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM