如果进程(文件)由外部程序使用Python打开,该如何关闭?

时间:2019-04-18 18:54:42

标签: python python-3.x pandas taskkill

我正在从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'

1 个答案:

答案 0 :(得分:1)

如果文件是由外部程序(在这种情况下为MS Excel)打开的,则该文件的文件句柄或控件由该程序控制。 Python无法控制该文件,因此无法关闭/编辑该文件。但是,如果您具有文件的进程ID,则可以通过其他方式终止该进程(例如,在Windows中使用taskkill或在even with Python中使用)。