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

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

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


当前回答

os.path.exists对文件夹和文件都返回True。考虑使用os.path.isfile来检查文件是否存在。

其他回答

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

from glob import glob
import os

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

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

os.path.exists对文件夹和文件都返回True。考虑使用os.path.isfile来检查文件是否存在。

更python化的方式是:

try:
    os.remove(filename)
except OSError:
    pass

尽管这需要更多的行,而且看起来很丑,但它避免了对os.path.exists()的不必要调用,并遵循了过度使用异常的python约定。

为你写一个函数来做这件事可能是值得的:

import os, errno

def silentremove(filename):
    try:
        os.remove(filename)
    except OSError as e: # this would be "except OSError, e:" before Python 2.6
        if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
            raise # re-raise exception if a different error occurred

献吻礼:

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

然后:

remove_if_exists("my.file")

像这样的东西?利用短路评估。如果文件不存在,整个条件就不能为真,所以python不会麻烦求第二部分。

os.path.exists("gogogo.php") and os.remove("gogogo.php")