在我的应用程序中,我写了一个excel文件.写完后,用户可以通过打开文件来查看该文件.但是,如果用户在进一步写入之前忘记关闭文件,则应显示警告消息.所以我需要一种方法来检查这个文件在写入过程之前是否打开.你能为我提供一些python代码来完成这项任务吗?
提前致谢.
小智 40
如果您关心的只是当前进程,一种简单的方法是使用文件对象属性"关闭"
f = open('file.py')
if f.closed:
print 'file is closed'
Run Code Online (Sandbox Code Playgroud)
这不会检测文件是否被其他进程打开!
来源:http://docs.python.org/2.4/lib/bltin-file-objects.html
Tim*_*ker 38
我假设您正在写入文件,然后关闭它(因此用户可以在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()
Run Code Online (Sandbox Code Playgroud)
您可以使用with open("path") as file:它自动关闭,否则如果它在另一个进程中打开,您可以尝试像 Tims 示例一样,您应该使用 except IOError 来不忽略代码中的任何其他问题:)
try:
with open("path", "r") as file: # or just open
# Code here
except IOError:
# raise error or print
Run Code Online (Sandbox Code Playgroud)
小智 5
当我在Windows 10上使用excel处理这个特定问题时,其他任何提供的示例都不会对我有用.我能想到的唯一其他选项是尝试暂时重命名包含该文件的文件或目录,然后将其重命名.
import os
try:
os.rename('file.xls', 'tempfile.xls')
os.rename('tempfile.xls', 'file.xls')
except OSError:
print('File is still open.')
Run Code Online (Sandbox Code Playgroud)