проверить, открыт ли файл в Python

В моем приложении я пишу файл excel. После записи пользователь может просмотреть файл, открыв его. Но если пользователь забывает закрыть файл перед любой последующей записью, должно появиться предупреждающее сообщение. Поэтому мне нужен способ проверить, что этот файл открыт перед записью процесса. Не могли бы вы предоставить мне код python для выполнения этой задачи?

Заранее спасибо.

Я предполагаю, что вы пишете в файл, а затем закройте его (чтобы пользователь мог открыть его в Excel), а затем, прежде чем повторно открыть его для операций добавления / записи, вы хотите проверить, что файл не все еще открыть в Excel?

Вот как вы должны это делать:

try: myfile = open("myfile.csv", "r+") # or "a+", whatever you need except IOError: print "Could not open file! Please close Excel!" with myfile: do_stuff() 

Если все, о чем вы заботитесь, – это текущий процесс , простой способ – использовать атрибут файла-объекта «закрытый»,

 f = open('file.py') if f.closed: print 'file is closed' 

Это не обнаружит, открыт ли файл другими процессами!

источник: http://docs.python.org/2.4/lib/bltin-file-objects.html

Вы можете использовать с открытым («путь») в качестве файла: так, чтобы он автоматически закрывался, иначе, если он открыт в другом процессе, вы можете попробовать, как в примере с Tims, вы должны использовать, за исключением IOError, чтобы не игнорировать другие проблемы с вашим кодом 🙂

 try: with open("path", "r") as file:#or just open #Code here except IOError: #raise error or print 

Ни один из других предоставленных примеров не сработает для меня, когда вы столкнетесь с этой конкретной проблемой с excel на Windows 10. Единственный другой вариант, о котором я мог подумать, – это временно переименовать файл или каталог, содержащий файл, а затем переименовать его.

 import os try: os.rename('file.xls', 'tempfile.xls') os.rename('tempfile.xls', 'file.xls') except OSError: print('File is still open.') 
Давайте будем гением компьютера.