如何删除文件或文件夹

python file-io directory delete-file


如何在Python中删除一个文件或文件夹?




Answer 1 RichieHindle



Path Python 3.4+ pathlib 模块中的路径对象还公开了这些实例方法:




Answer 2 anand tripathi


删除文件的Python语法

import os
os.remove("/tmp/<file_name>.txt")

Or

import os
os.unlink("/tmp/<file_name>.txt")

Or

适用于Python版本> 3.5的pathlib库

file_to_rem = pathlib.Path("/tmp/<file_name>.txt")
file_to_rem.unlink()

Path.unlink(missing_ok=False)

用来删除文件或符号链接的取消链接方法。

如果missing_ok为false(默认值),如果路径不存在,就会引发FileNotFoundError。
如果missing_ok为真,FileNotFoundError异常将被忽略(与POSIX rm -f命令行为相同)。
在3.8版本中进行了修改。增加了missing_ok参数。

最佳做法

  1. 首先,检查该文件或文件夹是否存在,然后只删除该文件。这可以通过两种方式实现。
    一个。 os.path.isfile("/path/to/file")
    b。使用 exception handling.

实例os.path.isfile

#!/usr/bin/python
import os
myfile="/tmp/foo.txt"

## If file exists, delete it ##
if os.path.isfile(myfile):
    os.remove(myfile)
else:    ## Show an error ##
    print("Error: %s file not found" % myfile)

异常处理

#!/usr/bin/python
import os

## Get input ##
myfile= raw_input("Enter file name to delete: ")

## Try to delete the file ##
try:
    os.remove(myfile)
except OSError as e:  ## if failed, report it back to the user ##
    print ("Error: %s - %s." % (e.filename, e.strerror))

尊敬的输出

Enter file name to delete : demo.txt
Error: demo.txt - No such file or directory.

Enter file name to delete : rrr.txt
Error: rrr.txt - Operation not permitted.

Enter file name to delete : foo.txt

删除文件夹的Python语法

shutil.rmtree()

shutil.rmtree() 的示例

#!/usr/bin/python
import os
import sys
import shutil

# Get directory name
mydir= raw_input("Enter directory name: ")

## Try to remove tree; if failed show an error using try...except on screen
try:
    shutil.rmtree(mydir)
except OSError as e:
    print ("Error: %s - %s." % (e.filename, e.strerror))



Answer 3 Mihai Maruseac


Use

shutil.rmtree(path[, ignore_errors[, onerror]])

(请参阅关于shutdownil的完整文档)和/或

os.remove

and

os.rmdir

(关于os的完整文档。)




Answer 4 flycee


这是一个使用 os.removeshutil.rmtree 的健壮函数:

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path) or os.path.islink(path):
        os.remove(path)  # remove the file
    elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))



Answer 5 MSeifert


您可以使用内置的 pathlib 模块(需要Python 3.4+,但PyPI上有较早版本的backport: pathlib pathlib2 )。

要删除文件,可以使用 unlink 方法:

import pathlib
path = pathlib.Path(name_of_file)
path.unlink()

或使用 rmdir 方法删除一个文件夹:

import pathlib
path = pathlib.Path(name_of_folder)
path.rmdir()