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)
在这里,我想读取.txt文件中的内容,然后删除内容并将其删除。但是它始终显示它无法将其删除,因为“该进程无法访问该文件,因为该文件正在被另一个进程使用”。
实际上,我需要删除.txt文件,但有时无法立即删除它,因此我首先擦除了内容,以防再次读取。那么,有什么好的方法可以读取.txt文件中的内容,然后尽快且稳定地删除该文件?
答案 0 :(得分:1)
删除不必要的close()
语句以开始-如提到的@grapes-为什么要截断要删除的内容?只需删除它...
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)
仅供参考,如果您不控制文件的内容,则执行文件的内容是一种糟糕的形式。
另一个选择:
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)
答案 1 :(得分:0)
您不应致电f.close()
或g.close()
。 with
语句自动调用它。
答案 2 :(得分:0)
尝试在例外部分使用短暂睡眠:
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
另一种方法是使用:
os.remove(masterpath)