我想删除文件filename
,如果它存在的话。这样说合适吗
if os.path.exists(filename):
os.remove(filename)
有更好的办法吗?单行道?
os.path.exists
为文件夹和文件返回True
。考虑使用os.path.isfile
来检查文件是否存在。
我更喜欢抑制异常,而不是检查文件是否存在,以避免TOCTOU错误。Matt的答案就是一个很好的例子,但是我们可以在Python 3下使用contextlib.suppress()
稍微简化它:
import contextlib
with contextlib.suppress(FileNotFoundError):
os.remove(filename)
如果filename
是pathlib.Path
对象而不是字符串,我们可以调用它的.unlink()
方法,而不是使用os.remove()
。根据我的经验,对于文件系统操作来说,路径对象比字符串更有用。
因为这个答案中的所有内容都是Python3独有的,所以它提供了升级的另一个理由。
一种更具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错误。我做错了什么?