Python:该进程无法访问该文件,因为该文件正在被另一个进程使用

时间:2018-12-04 06:58:04

标签: python python-3.x

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文件中的内容,然后尽快且稳定地删除该文件?

3 个答案:

答案 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)