python之shutil模块

Posted RobotsRising

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之shutil模块相关的知识,希望对你有一定的参考价值。

1、shutil模块介绍

  shutil(或称为 shell 工具)模块中包含一些函数,让你在 Python 程序中复制、移动、改名和删除文件。要使用 shutil 的函数,首先需要 import shutil。

2、方法

2.1、复制文件和文件夹

2.1.1、shutil.copy(source, destination)   

  将路径 source 处的文件复制到路径 destination处的文件夹(source 和 destination 都是字符串)。如果 destination 是一个文件名,它将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。

import shutil
shutil.copy("F:\\\\share\\\\python\\\\style.css", "F:\\\\share")

  输出结果:

\'F:\\\\share\\\\style.css\'

 

import shutil
shutil.copy("data.sql", "F:\\\\share")

  输出结果:

\'F:\\\\share\\\\data.sql\'

 

2.1.2、shutil.copytree(source, destination)

  将路径 source 处的文件夹,包括它的所有文件和子文件夹,复制到路径 destination 处的文件夹。 source 和destination 参数都是字符串。该函数返回一个字符串,是新复制的文件夹的路径。

import shutil
shutil.copytree("tornado", "F:\\\\share\\\\test")

  输出结果:

\'F:\\\\share\\\\test\' 

 

2.2、文件和文件夹的移动与改名 

2.2.1、shutil.move(source, destination)

  将路径 source 处的文件夹移动到路径destination,并返回新位置的绝对路径的字符串。

import shutil
shutil.move("F:\\\\share\\\\python\\\\func.txt", "F:\\\\share\\\\test")

  输出结果:

\'F:\\\\share\\\\test\\\\func.txt\'

 

2.3、永久删除文件和文件夹

  利用 os 模块中的函数,可以删除一个文件或一个空文件夹。但利用 shutil 模块,可以删除一个文件夹及其所有的内容。

2.3.1、os.unlink(path)

  删除 path 处的文件。

import os

for filename in os.listdir("F:\\\\share\\\\python"):
    if filename.endswith(".txt"):
        print(filename)
        os.unlink(filename)

  输出结果:

new.txt

 

2.3.2、os.rmdir(path)

  删除 path 处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。

import os
os.rmdir("F:\\\\share\\\\test")

  输出结果:

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-16-8c8f7b0cf6ca> in <module>()
      1 import os
----> 2 os.rmdir("F:\\\\share\\\\test")

OSError: [WinError 145] 目录不是空的。: \'F:\\\\share\\\\test\'

 

import os
path = "F:\\\\share\\\\test\\\\hello"
print(os.path.exists(path))
os.rmdir(path)
print(os.path.exists(path))

  输出结果:

True
False

 

2.3.3、shutil.rmtree(path)

  删除 path 处的文件夹,它包含的所有文件和文件夹都会被删除。

import shutil
path = "F:\\\\share\\\\test\\\\imges"
print(os.path.exists(path))
shutil.rmtree(path)
print(os.path.exists(path))

  输出结果:

True
False

 

2.4、用 send2trash 模块安全地删除   

  因为 Python 内建的 shutil.rmtree()函数不可恢复地删除文件和文件夹,所以 用起来可能有危险。删除文件和文件夹的更好方法,是使用第三方的 send2trash 模块。你可以在终端窗口中运行 pip install send2trash,安装该模块(参见附录 A,其中更详细地解释了如何安装第三方模块)。

  利用 send2trash,比 Python 常规的删除函数要安全得多,因为它会将文件夹和文件发送到计算机的垃圾箱或回收站,而不是永久删除它们。如果因程序缺陷而用send2trash 删除了某些你不想删除的东西,稍后可以从垃圾箱恢复。

import send2trash
path = "F:\\\\share\\\\test\\\\templates"
print(os.path.exists(path))
send2trash.send2trash(path)
print(os.path.exists(path))

  输出结果:

True
False

  查看垃圾箱:

 

以上是关于python之shutil模块的主要内容,如果未能解决你的问题,请参考以下文章

python之shutil模块

python之shutil模块

Python之shutil模块

python之shutil模块

python模块之shutil

Python3之shutil模块