我想删除文件文件名,如果它存在。这样说合适吗

if os.path.exists(filename):
    os.remove(filename)

有没有更好的办法?一条线路?


当前回答

马特的答案适合老的蟒蛇,凯文的答案适合新蟒蛇。

如果你不希望复制silentremove的函数,这个函数将在path.py中作为remove_p公开:

from path import Path
Path(filename).remove_p()

其他回答

另一种了解文件(或多个文件)是否存在并删除它的方法是使用模块glob。

from glob import glob
import os

for filename in glob("*.csv"):
    os.remove(filename)

Glob找到所有可以使用*nix通配符选择模式的文件,并循环该列表。

马特的答案适合老的蟒蛇,凯文的答案适合新蟒蛇。

如果你不希望复制silentremove的函数,这个函数将在path.py中作为remove_p公开:

from path import Path
Path(filename).remove_p()

按照Andy Jones回答的精神,一个真正的三元运算怎么样:

os.remove(fn) if os.path.exists(fn) else None
if os.path.exists(filename): os.remove(filename)

是一行程序。

你们中的许多人可能不同意——可能是考虑到建议使用三元词“丑陋”——但这引出了一个问题:当人们习惯了丑陋的标准时,当他们把不标准的东西称为“丑陋”时,我们是否应该听从他们的意见。

这是另一个解决方案:

if os.path.isfile(os.path.join(path, filename)):
    os.remove(os.path.join(path, filename))