Python:os.remove()和os.unlink()之间的区别以及使用哪一个?

时间:2017-03-06 21:36:57

标签: python python-2.7

我在文件夹中有很多文件。我想删除一个文件后删除它。这两种方法的区别是什么?哪种方法适用于我的场景?谢谢!

2 个答案:

答案 0 :(得分:35)

它们与official Python 2.7.15 documentation中描述的相同。

os.remove(path):

  

删除(删除)文件路径。如果 path 是目录,   提出OSError;请参阅下面的rmdir()以删除目录。 这是   与下面记录的unlink()函数相同。在Windows上,   尝试删除正在使用的文件会导致异常   提高;在Unix上,目录条目被删除但存储   在原始文件出现之前,分配给该文件的文件不可用   不再使用了。

     

可用性:Unix,Windows。

os.unlink(path):

  

删除(删除)文件路径此功能与remove(); 相同   unlink()名称是其传统的Unix名称。

     

可用性:Unix,Windows。

答案 1 :(得分:7)

在Python v3.4和更高版本中使用pathlib.Path文件访问时

虽然该问题专门要求删除os模块文件,但最新版本的Python还有另一种选择来删除文件,这可能是替代方法。

直接回答-使用pathlib.Path.unlink()

  • 注意:pathlib.Path.remove()不存在

使用pathlib module进行文件访问时,请使用pathlib.Path.unlink()删除文件。

Path.unlink()方法替代了os.remove()os.unlink()。它直接在 Path 对象上执行,而不是通过 string 参数传递文件的位置。

更多详细信息

从Python v3.4开始,pathlib内置模块可用于以面向对象的方式处理文件访问。我相信Pip也可以为旧版本的Python提供单独的软件包。

使用pathlib,您可以创建Path类的文件夹和文件对象。删除文件的相关方法已合并为unlink()。他们没有remove()方法(可能是因为,根据shash678的回答,没有区别,它只是一个别名)。除了指定文件本身的基本方法外,这似乎等效于os文件删除方法。

请参阅Object Oriented file system paths以及底部显示os.remove()os.unlink()映射到Path.unlink()的表格。

在Python v3.8中, missing_ok 参数已添加到Path.unlink()函数中。如果使用*missing_ok* == True,则在尝试删除文件之前,如果该文件不存在,则不会引发异常。