【组织文件】对文件进行复制、移动、删除、压缩

一、复制、移动、删除文件

- 复制文件或文件夹

# -*- coding: utf-8 -*-
import shutil
import os

'''
使用shutil.copy进行文件复制
(这里采用相对地址)
'''
# 更改当前程序工作目录到所需目录
os.chdir(r"D:\test")
# 复制111.txt文件到当前目录,并重命名为222.txt
shutil.copy("111.txt","222.txt")
# 复制111.txt文件到下级222目录,同时默认以原文件名命名
shutil.copy("111.txt","222")
# 复制111.txt文件到下级222目录,同时以222.txt文件名命名
shutil.copy("111.txt",r"222\222.txt")
'''
使用shutil.copytree进行文件夹复制,会复制文件夹内的所有文件及所有子文件夹
(这里采用绝对地址)
'''
# 复制222文件夹为111文件夹(必须指定目标文件夹名)
shutil.copytree(r"D:\test\222",r"D:\test\111")

- 移动文件或文件夹

# -*- coding: utf-8 -*-
import shutil
'''
使用shutil.move移动文件或文件夹
'''
# 将111.txt移动到222文件夹下,因222文件夹存在,则以111.txt命名,文件会被移动到222文件夹下
print(shutil.move(r"D:\test\111.txt",r"D:\test\222"))
# 将111.txt移动到333文件夹下,因333文件夹不存在,则以333命名(通常这种情况是错误的,且容易被忽略)
print(shutil.move(r"D:\test\111.txt",r"D:\test\333"))
# 将111.txt移动到333\444文件夹下,因333\444文件夹不存在,则会抛出异常FileNotFoundError
print(shutil.move(r"D:\test\111.txt",r"D:\test\333\444"))
# 同理也可以移动文件夹到指定目录(路径若不存在,则会依级创建文件夹)
print(shutil.move(r"D:\test\222",r"D:\test\新建文件夹1\222\333"))

- 删除文件或文件夹

# -*- coding: utf-8 -*-
import shutil
import os
import send2trash
'''
使用os.unlink彻底删除文件
使用os.rmdir彻底删除空文件夹
使用shutil.rmtree彻底删除文件夹(非空也可以)
使用send2trash.send2trash删除文件或文件夹(非空也可以,会发送到回收站,是一种较为安全的删除方式)
'''
# 删除D:\test\111.txt文件
os.unlink(r"D:\test\111.txt")
# 删除111文件夹(111为空文件夹)
os.rmdir(r"D:\test\111")
# 删除222文件夹(222为非空文件夹)
shutil.rmtree(r"D:\test\222")
# 删除‘新建文件夹 (2)’文件夹
send2trash.send2trash(r"D:\test\新建文件夹 (2)")

二、遍历文件夹

- 遍历文件夹

'''
遍历某个文件夹,依级列出当中所有的文件夹路径字符、子文件夹列表、文件列表。
如果传入的path是绝对路径,则此时返回值也为绝对路径。
如果传入的path是相对路径,则此时返回值也为相对路径,
如果此时想使用绝对路径,可以用sys.path[0]获取当前工作目录。
'''
for folderName, subfolders, filenames in os.walk(r"D:\test"):
    # 返回当前文件夹绝对路径字符串
    print(folderName)
    # 返回当前文件夹下的所有子文件夹列表
    print(subfolders)
    # 返回当前文件夹下的所有文件列表
    print(filenames)

三、压缩文件

使用zipfile模块压缩文件

# 创建一个新的压缩文件
example_zipfile=zipfile.ZipFile("test2.zip","w")
# 将文件写入到压缩文件中(前面创建压缩文件时传入的参数:w为覆盖,a为附加,r为只读)
example_zipfile.write(r"test\新建文件夹2")
# 查看该压缩文件下存在的文件或文件夹列表
print(example_zipfile.namelist())
# 关闭压缩文件
example_zipfile.close()

猜你喜欢

转载自blog.csdn.net/huihuihhh/article/details/80955833