有没有办法让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")
答案 0 :(得分:2)
尝试使用with
上下文,它将在上下文结束时顺利管理关闭(__exit__
)操作:
with open(...) as theFile:
file_content = theFile.read()
答案 1 :(得分:0)
您也可以尝试将文件复制到临时文件,然后随意打开/关闭/删除它。但是,它要求您具有对原始文件的读取权限。
在这个例子中,我有一个文件" test.txt"这是只写的(chmod 444),它会抛出" Permission denied"如果我尝试直接写它错误。我将它复制到一个临时文件中,该文件包含" 777"权利,以便我可以用它做我想做的事情:
import tempfile, shutil, os
def create_temporary_copy(path):
temp_dir = tempfile.gettempdir()
temp_path = os.path.join(temp_dir, 'temp_file_name')
os.chmod(temp_path, 0o777); # give full access to the tempfile so we can copy
shutil.copy2(path, temp_path) # copy the original into the temp one
os.chmod(temp_path, 0o777); # replace permissions from the original file
return temp_path
path = "./test.txt" # original file
copy_path = create_temporary_copy(path) # temp copy
with open(copy_path, "w") as g: # can do what I want with it
g.write("TEST\n")
答案 2 :(得分:-1)
f = open("C:/Users/amol/Downloads/result.csv", "r")
print(f.readlines()) #just to check file is open
f.close()
# here you can add above print statement to check if file is closed or not. I am using python 3.5