Python学习笔记组织文件之shutil模块
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
shutil(或成为shell工具)模块中包含一些函数,让你在Python程序中复制、移动、改名和删除文件。要使用shutil的函数,首先需要
import shutil。
#------------------------------------------------我是可耻的分割线-------------------------------------------
1、复制文件和文件夹
shutil模块提供了一些函数,用于复制文件和整个文件夹。调用shutil.copy(source,destination),将路径source处的文件复制到路径
destination处的文件夹(source和destination都是字符串)。如果destination是一个文件名,它将作为被复制文件的新名字。该函数返回一个
字符串,表示被复制文件的路径。
shutil.copy()函数,以文件夹为destination,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import shutil,os
#使用os.getcwd()函数,获取当前路径下的shutil_copy.py文件作为source,copy到D:\\quiz,作为destination
shutil.copy(os.getcwd() + '\\shutil_copy.py','D:\\quiz')
运行结果:

shutil.copy()函数,以文件为destination,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import shutil,os
#使用os.getcwd()函数,获取当前路径下的shutil_copy.py文件作为source,copy到D:\\quiz\\shutil.txt,作为destination
shutil.copy(os.getcwd() + '\\shutil_copy.py','D:\\quiz\\shutil.txt')
运行结果:

根据运行结果可以看出,以文件名为destination时,会把source内容copy到destination文件中。
shutil.copytree()方法,拷贝整个文件夹,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import shutil,os
#使用os.chdir(),改变当前工作目录为C:\Users\Administrator\PycharmProjects\test\文件读写
os.chdir('C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写')
#shutil.copytree(),把当前目录copy到D:\\quiz下,文件名称需要指定
shutil.copytree(os.getcwd(),'D:\\quiz\\文件读写')
运行结果:

在D:\\quiz下创建文件读写文件夹,并把source文件夹内容copy到destination文件夹下。
2、文件和文件夹的移动与改名
调用shutil.move(source,destination),将路径source处的文件夹移动到路径destination,并放回新位置的绝对路径的字符串。
如果destination指向一个文件夹,source文件将移动到destination中,并保持原来的文件名。
shutil.move()方法,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import shutil,os
#使用shutil.move()方法,把文件移动到想要的文件夹下
shutil.move(os.getcwd() + '\\shutil_move.py','d:\\quiz')
运行结果:

根据结果可以看出,已经把shutil_move.py移动到了D盘,source文件夹下就没有了。用相同方法也可以移动文件夹。
3、永久删除文件和文件夹
利用 os 模块中的函数,可以删除一个文件或一个空文件夹。但利用 shutil 模块,可以删除一个文件夹及其所有的内容。
(1)用 os.unlink(path)将删除 path 处的文件。
os.unlink()方法,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import os
#定义一个列表,用来存储被删除的文件
filename_move = []
#打印提示信息
print('当前工作目录下文件'.center(30, '*'))
#循环
for filename in os.listdir():
# 打印当前工作文件夹中,所有文件
print(filename)
#判断文件夹中,文件后缀是否为.txt
if filename.endswith('.txt'):
#把.txt文件追加到filename_move变量
filename_move.append(filename)
# 为.txt,就使用os.unlink()方法,删除该文件
os.unlink(filename)
#打印提示信息
print('被删除文件'.center(30, '*'))
#循环打印被删除的文件
for move in filename_move:
print(move)
运行结果:

(2)调用 os.rmdir(path)将删除 path 处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。
os.rmdir()方法,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import os
print(os.rmdir('D:\quiz\新建文件夹'))
运行结果:

os.rmdir()方法,删除文件夹下存在文件,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import os
print(os.rmdir('D:\quiz\move_test_file'))
运行结果:

(3)调用 shutil.rmtree(path)将删除 path 处的文件夹,它包含的所有文件和文件夹都会被删除。
shutil.rmtree()方法,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import os,shutil
print(shutil.rmtree('D:\quiz\move_test_file'))
运行结果:

shutil.rmtree()方法,删除文件夹时,文件夹下的文件也会被删除。
使用shutil.rmtree()方法,删除指定目录下所有文件夹,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import os,shutil
move_directory = []
# 遍历指定路径下所有文件或文件夹
for directory in os.listdir('D:\quiz'):
directory = 'D:\\quiz\\' + directory
# 找指定路径所有文件夹
if os.path.isdir(directory):
# 使用shutil.rmtree(),删除文件夹
shutil.rmtree(directory)
move_directory.append(directory)
print('被删除文件夹')
for a in move_directory:
print(a)
运行结果:

4、用send2trash模块安全地删除
因为 Python 内建的 shutil.rmtree()函数不可恢复地删除文件和文件夹,所以 用起来可能有危险。删除文件和文件夹的更好方法,是使用第三方的 send2trash 模块。你可以在终端窗口中
运行 pip install send2trash,安装该模块。
send2trash()方法,删除文件,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import send2trash
#send2trash.send2trash(),删除文件
send2trash.send2trash('D:\\quiz\\22.txt')
send2trash()方法,删除文件夹,示例代码:
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import send2trash
#send2trash.send2trash(),删除文件
send2trash.send2trash('D:\\quiz\\新建文件夹')
利用 send2trash,比 Python 常规的删除函数要安全得多,因为它会将文件夹和文件发送到计算机的垃圾箱或回收站,而不是永久删除它们。如果因程序缺陷而用send2trash 删除了某些你不想删除的东西,稍后可以从垃圾箱恢复。
一般来说,总是应该使用 send2trash.send2trash()函数来删除文件和文件夹。虽然它将文件发送到垃圾箱,让你稍后能够恢复它们,但是这不像永久删除文件,不会释放磁盘空间。如果你希望程序释放磁盘空间,就要用 os 和 shutil 来
删除文件和文件夹。请注意,send2trash()函数只能将文件送到垃圾箱,不能从中恢复文件。
Python学习笔记组织文件之shutil模块的更多相关文章
- [Python学习笔记]组织文件
shutil 模块 shutil 模块可以让我们很方便的在Python程序中复制.移动.改名和删除文件. 复制文件和文件夹 使用shutil.copy()来复制文件,该函数含两个参数,均为字符串格式的 ...
- Python学习笔记之文件处理
1.打开和关闭 要打开文件可以使用函数 open(),它位于自动导入模块 io 中.函数将文件名作为唯一不可缺少的函数,并返回一个文件对象.它还有一个名叫 mode 的参数,用于指定文件模式,其可取值 ...
- python学习笔记(26)-request模块
python学习笔记 #requests import requests #from class_005.http_resuest import HttpRequest login_url = &qu ...
- python学习笔记(11):文件的访问与函数式编程
一.文本文件读写的三种方法 1.直接读入 file1 = open('E:/hello/hello.txt') file2 = open('output.txt','w') #w是可写的文件 whil ...
- python学习笔记(7)文件的访问与函数式编程
一.文件读写的3中方法 1.直接读入 fiel1=open('test.txt') file2=open('output.txt') while True: line=file1.readLine() ...
- Python学习笔记4(函数与模块)
1.Python程序的结构 Python的程序由包(package).模块(module)和函数组成. 模块是处理一类问题的集合,由函数和类组成. 包是由一系列模块组成的集合.包是一个完成特定任务的工 ...
- Python学习笔记015——文件file的常规操作之一(文本文件)
1 什么是文件 文件是用于数据存储的单位 文件通常用来长期保存数据 读写文件是最常见的I/O操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件的功能都是由操作系统提供的,一般而言,操 ...
- python学习笔记 操作文件和目录
如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...
- Python学习笔记(20)-文件和文件夹的移动、复制、删除、重命名
一,概述 python中对文件和文件夹进行移动.复制.删除.重命名,主要依赖os模块和shutil模块,要死记硬背这两个模块的方法还是比较困难的,可以用一个例子集中演示文件的移动.复制.删除.重命名, ...
- 转载-python学习笔记之文件I/O
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
随机推荐
- linux 端口的相关命令
查看某个端口是否开发 isof -i:端口 说明:如果有显示说明已经开放了,如果没有显示说明没有开放 开放端口之后,查看防火墙是否对端口开放 查询端口号80 是否开启: firewall-cmd -- ...
- 网站整套部署方案-负载均衡配置Nginx+宝塔+云数据库+云WAF
这是一套部署特别方便的站点方案,包括使用nginx负载均衡,宝塔部署站点,云数据库加一套安全产品云WAF. 一.结构图 1.基本功能 负载均衡,WEB,数据库都是在一个云平台上,内网都属于一个vpc二 ...
- SVN 之切换账号
简单来说两步就搞定了 第一步删除已缓存的数据 第二步输入要切换账号密码 具体步骤图解如下: 第一步: 点击TortoiseSVN 找到设置 点击已保存数据 点击清除全部 再点击确定 第二步: 点击s ...
- kubeSphere+kubernetes 集群更新证书
模拟问题点 使用kubernetes时错误提示 yang@master:~$ kubectl get nodes Unable to connect to the server: x509: cert ...
- centos系统时间与硬件时间不一致
centos系统时间与硬件时间设置.同步 将系统时间设置成2018年7月31日 12:00:00 date -s "07/31/18 12:00:00" hwclock -s 将 ...
- java 自定义注解与示例
自定义注解 @Target(value = {ElementType.METHOD})// 使用范围:方法 @Retention(RetentionPolicy.RUNTIME)// 作用域:运行时有 ...
- Linux安装Nginx安装并配置stream
编译安装 1.下载可编译的nginx cd /opt wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.20.1 ...
- 01爬取豆瓣网电影数据进行numpy的练习
level 2:10.案例:编写爬虫爬取豆瓣电影排行榜(电影名称,评分),保存为csv文件 a.用numpy加载csv数据 b.把评分列转换成float64类型 c.计算电影的平均评分 d.求评分最高 ...
- Delphi中Stringlist的自定义排序(将函数地址做为参数)
近日,在编制一个程序过程,因为数据量较小,就使用了stringlist来暂存数据.在使用过程中,遇到了一个问题.Stringlist字符串列表的默认排序方法是按ASCII码的方式进行排序,如3,10, ...
- 【驱动】libjpeg 库的移植
1.下载库 http://www.ijg.org/ 下载 jpegsrc.v9e.tar.gz 2.准备好空文件夹位置 opt/libdecode opt/libdecode/lib opt ...