删除文件(如果存在); 蟒蛇

Yui*_*Yui 11 python file-io try-catch

我想创建一个文件; 如果它已经存在我想删除它并重新创建它.我尝试这样做,但它抛出Win32错误.我究竟做错了什么?

try:
    with open(os.path.expanduser('~') + '\Desktop\input.txt'):
        os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
        f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'a')
except IOError:
    f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'a')
Run Code Online (Sandbox Code Playgroud)

Aya*_*Aya 26

您正在尝试删除打开的文件,以及os.remove()状态文档...

在Windows上,尝试删除正在使用的文件会导致引发异常

您可以将代码更改为...

filename = os.path.expanduser('~') + '\Desktop\input.txt'
try:
    os.remove(filename)
except OSError:
    pass
f1 = open(filename, 'a')
Run Code Online (Sandbox Code Playgroud)

......或者你可以用......取而代之

f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'w')
Run Code Online (Sandbox Code Playgroud)

...在打开之前将文件截断为零长度.

  • 这是一个潜在的竞争条件,在删除它之前检查`os.path.exists` (2认同)