当前位置: 首页 > 知识库问答 >
问题:

删除可能不存在的文件的大多数python方法

奚修伟
2023-03-14

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

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

有更好的办法吗?单行道?

共有3个答案

訾凯歌
2023-03-14

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

邢骏
2023-03-14

我更喜欢抑制异常,而不是检查文件是否存在,以避免TOCTOU错误。Matt的答案就是一个很好的例子,但是我们可以在Python 3下使用contextlib.suppress()稍微简化它:

import contextlib

with contextlib.suppress(FileNotFoundError):
    os.remove(filename)

如果filenamepathlib.Path对象而不是字符串,我们可以调用它的.unlink()方法,而不是使用os.remove()。根据我的经验,对于文件系统操作来说,路径对象比字符串更有用。

因为这个答案中的所有内容都是Python3独有的,所以它提供了升级的另一个理由。

朱起运
2023-03-14

一种更具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
 类似资料:
  • 问题内容: 我要删除该文件(如果存在)。说的合适吗 有没有更好的办法?单行方式? 问题答案: 一种更pythonic的方式是: 尽管这花费了更多的行并且看起来很丑陋,但是它避免了不必要的调用并遵循过度使用异常的python约定。 可能值得编写一个函数为您执行此操作:

  • 在Python中,有没有一种简单的方法可以删除一个字典的属性,当这个属性可能一开始就不存在的时候? 如果使用语句,则结果为KeyError: 使用if语句有点冗长,必须键入和两次: 正在查找与类似的内容,如果该属性不存在,则默认为值:

  • 本文向大家介绍python删除不需要的python文件方法,包括了python删除不需要的python文件方法的使用技巧和注意事项,需要的朋友参考一下 最近在看廖老师的python教程,在看到关于文件的操作时,廖老师的其中一段关于查找电脑里的python文件,突然想把之前写的python代码给删除了,因为这是第二次看教程了。 以上这篇python删除不需要的python文件方法就是小编分享给大家的

  • 问题内容: 我正在Linux系统上使用非常大的文本文件(〜11GB)。我正在通过正在检查文件错误的程序来运行它。一旦发现错误,我需要修复该行或完全删除该行。然后重复… 最终,一旦我对流程感到满意,我便将其完全自动化。但是,现在让我们假设我正在手动运行它。 从此大文件中删除特定行最快(就执行时间而言)是什么?我想到了用Python进行此操作…但是可以接受其他示例。该行可能在文件中的 任何位置 。 如

  • 问题内容: 我正在使用postgreSQL9.1,并且想使用此提示从表中删除重复项: 另一种可能的方式是 我在ORDER BY (SELECT 0)上面使用,因为在打平的情况下保留哪一行是任意的。 为了保留最新的RowID顺序,例如,您可以使用ORDER BY RowID DESC 执行计划 执行计划通常比接受的答案更简单,更有效,因为它不需要自我连接。 执行计划 但是,情况并非总是如此。一种GR

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