检查一个文件是否在Python中打开

在我的应用程序中,我写入了一个excel文件。 写入后,用户可以通过打开文件来查看文件。 但是,如果用户忘记在进一步写入之前closures文件,则应该出现警告消息。 所以我需要一种方法来检查这个文件在写入过程之前是否打开。 你能提供一些python代码来完成这个任务吗?

提前致谢。

我假定你正在写文件,然后closures它(所以用户可以在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() 

如果你关心的是当前进程 ,一个简单的方法是使用文件对象属性“closures”

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

这不会检测文件是否被其他进程打开!

来源: http : //docs.python.org/2.4/lib/bltin-file-objects.html

你可以使用打开(“path”)作为文件:所以它会自动closures,否则,如果它在另一个进程中打开,你可以尝试在蒂姆的例子,你应该使用除IOError不忽略任何其他问题与您的代码:)

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

在使用Excel 10处理这个特定问题时,其他提供的示例都不适用于我。我唯一能想到的另一个select是尝试重命名临时包含该文件的文件或目录,然后重命名它。

 import os try: os.rename('file.xls', 'tempfile.xls') os.rename('tempfile.xls', 'file.xls') except OSError: print('File is still open.')