我正在从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'
答案 0 :(得分:1)
如果文件是由外部程序(在这种情况下为MS Excel)打开的,则该文件的文件句柄或控件由该程序控制。 Python无法控制该文件,因此无法关闭/编辑该文件。但是,如果您具有文件的进程ID,则可以通过其他方式终止该进程(例如,在Windows中使用taskkill或在even with Python中使用)。