【发布时间】:2018-05-15 10:36:29
【问题描述】:
有没有办法让 Python 关闭文件已经打开的文件。
或者至少显示一个文件打开的弹出窗口或permission error.的自定义书面错误消息弹出窗口
为了避免:
PermissionError: [Errno 13] Permission denied: 'C:\\zf.csv'
我见过很多打开文件然后通过 python 关闭它的解决方案。但就我而言。假设我打开了我的 csv,然后尝试运行该作业。
我怎样才能让它关闭当前打开的 csv?
我已经尝试了以下变体,但似乎都没有工作,因为他们期望我已经在较早的时候通过 python 打开了 csv。我怀疑我把事情复杂化了。
f = 'C:\\zf.csv'
file.close()
AttributeError: 'str' object has no attribute 'close'
这会产生错误,因为没有对文件打开的引用,而只是对字符串的引用。
甚至..
theFile = open(f)
file_content = theFile.read()
# do whatever you need to do
theFile.close()
还有:
fileobj=open('C:\\zf.csv',"wb+")
if not fileobj.closed:
print("file is already opened")
如何关闭已经打开的 csv?
我能想到的唯一解决方法是添加一个消息框,但我似乎无法让它检测文件。
filename = "C:\\zf.csv"
if not os.access(filename, os.W_OK):
print("Write access not permitted on %s" % filename)
messagebox.showinfo("Title", "Close your CSV")
【问题讨论】:
-
你可以使用
try/except来捕捉这个错误并做一些事情 -
您不能关闭在其他程序中打开的文件,因为系统控制它以确保安全。但问题可能是因为您将文件放在不应该使用的文件夹中 - 每个用户都有自己的文档文件夹。您是否尝试将其保存在您的文件夹或桌面上?
-
顺便说一句:
Permission denied不一定表示该文件已打开,但您无权打开此文件夹中的文件。 -
@furas 对我来说,当我已经打开该文件时,我会在 Windows 上得到这个。
-
不能把文件复制到temporary file,这样就可以随意打开、关闭、删除了吗?
标签: python python-3.x csv tkinter