Python:进程无法访问该文件,因为另一个进程正在使用该文件
在这里,我想读取.txt文件中的内容,然后擦除内容并将其删除。但它始终显示无法删除该文件,因为“该进程无法访问该文件,因为它正被另一进程使用”。Python:进程无法访问该文件,因为另一个进程正在使用该文件,python,python-3.x,Python,Python 3.x,在这里,我想读取.txt文件中的内容,然后擦除内容并将其删除。但它始终显示无法删除该文件,因为“该进程无法访问该文件,因为它正被另一进程使用”。 实际上我需要的是删除.txt文件,但有时它不能立即删除,所以我先删除内容,以防再次读取。那么,有没有什么好方法可以读取.txt文件中的内容,然后尽快稳定地删除此文件?您不应该调用f.close()或g.close()。它由和语句自动调用 尝试在异常部分使用短睡眠: try: masterpath = os.path.join(path, "ma
实际上我需要的是删除.txt文件,但有时它不能立即删除,所以我先删除内容,以防再次读取。那么,有没有什么好方法可以读取.txt文件中的内容,然后尽快稳定地删除此文件?您不应该调用
f.close()
或g.close()
。它由和语句自动调用 尝试在异常部分使用短睡眠:
try:
masterpath = os.path.join(path, "master.txt")
with open(masterpath, 'r') as f:
s = f.read()
f.close()
exec(s)
with open(masterpath, 'w') as g:
g.truncate()
g.close()
os.remove(masterpath)
另一种方法是使用:
try:
masterpath = os.path.join(path, "master.txt")
with open(masterpath, 'r') as f:
s = f.read()
f.close()
exec(s)
with open(masterpath, 'w') as g:
g.truncate()
g.close()
os.remove(masterpath)
except WindowsError:
time.sleep(sleep)
else:
break
删除不必要的close()
语句以开始-就像提到的@grapes-为什么要截断要删除的内容?只要删除它
os.remove(masterpath)
仅供参考,如果您不控制文件内容,则执行文件内容是一种不好的形式
另一种选择:
try:
masterpath = os.path.join(path, "master.txt")
with open(masterpath, 'r') as f:
s = f.read()
exec(s)
except Error as e:
print(e)
else:
os.remove(masterpath)
对不起,另一种方法是什么?你能解释一下吗?@Andy尝试在你的操作系统周围添加一个带有短暂睡眠的重试循环。删除调用。实际上,在我擦除之后。关闭,它仍然不起作用。
masterpath = os.path.join(path, "master.txt")
with open(masterpath, 'r') as f:
try:
s = f.read()
except Error as e:
print(e)
else:
exec(s)
os.remove(masterpath)