Как закрыть процесс (файл), если он был открыт внешней программой, использующей Python? - PullRequest
0 голосов
/ 18 апреля 2019

Я пишу в файл из 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 Ответ

1 голос
/ 19 апреля 2019

Если файл открыт внешней программой (например, в данном случае MS Excel), дескриптор файла или элемент управления файла находятся в программе.Python не имеет никакого контроля над файлом и не может закрывать / редактировать его.Однако, если у вас есть идентификатор процесса для файла, можно завершить процесс различными способами (например, с помощью taskkill в Windows или даже с Python ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...