《Python编程实训快速上手》第八天--组织文件

ops/2024/11/25 16:06:08/

一、shutil模块

shutil(或称为shell工具)模块中包含一些函数,让你可以在Python程序中复制、移动、重命名和删除文件。

1、复制文件和文件夹

source       destinationdestination存在destination不存在
文件文件将 source 文件复制并覆盖 destination 文件复制 source 文件并重命名为 destination
文件目录将 source 文件复制到 destination 目录中会抛出错误(因为目标目录不存在)
目录文件无此情况无此情况
                                    shutil.copytree(source, destination) 
目录目录报错(destination 目录必须为不存在的新目录)复制整个 source 目录及其内容到 destination,并创建 destination 目录

python">shutil.copytree(r"E:\test", Path.cwd()/"newText")
shutil.copy(r"E:\test.txt", Path.cwd()/"newText.txt")

2、 文件和文件夹的移动与重命名

shutil.move(source, destination)
source       destinationdestination存在destination不存在
文件文件将 source 文件移动并覆盖 destination 文件将 source 文件重命名为 destination 并移动到目标位置
文件目录将 source 文件移动到 destination 目录中
  • 只有最后一级目录不存在:将source文件重命名为destination目录名(无文件扩展名的文本文件)---bug
  • 中间级目录也有不存在:报错
目录文件无此情况无此情况
目录目录将 source 目录及其内容移动到 destination 目录中将 source 目录及其内容重命名为 destination 并移动到目标路径

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

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

  • 调用os.unlink(path)将删除path处的文件。
  • 调用os.rmdir(path)将删除path处的文件夹。该文件夹必须为空,其中不能有任何文件和文件夹。
  • 调用shutil.rmtree(path)将删除path处的文件夹,它包含的所有文件和文件夹都会被删除。

小tips:为了防止误删文件,可以在第一次运行程序时注释掉这些调用,并且加上print()调用,显示会被删除的文件。

python">from pathlib import Path
for filename in Path.home().glob('*.rxt'):#os.unlink(filename)print(filename)

4、用send2trash模块安全地删除

send2trash会将文件夹和文件发送到计算机的回收站,而不是永久删除它们。

使用send2trash.send2trash(路径)函数来删除文件和文件夹。

二、遍历目录树

使用os.walk()函数,该函数被传入一个字符串值,即一个文件夹的路径。可以在一个for循环语句中使用os.walk()函数遍历目录树,os.walk()在循环的每次迭代中返回以下3个值:

  • 当前文件夹名称的字符串,是绝对路径
  • 当前文件夹中子文件夹的字符串的列表
  • 当前文件夹中文件的字符串的列表

遍历文件夹顺序是从上往下

python">import  osfor folderName, subfolders, filenames in os.walk('C:\\delicious'):print('The current folder is ' + folderName)for subfolder in subfolders:print('SUBFOLDER OF ' + folderName + ': ' + subfolder)for filename in filenames:print('FILE INSIDE ' + folderName + ': '+ filename)print('')

三、 用zipfile模块压缩文件

在ZipFile对象中完成

1、读取ZIP文件

调用zipfile.ZipFile()函数创建ZipFile对象,向它传入一个字符串,表示ZIP文件的文件名。

ZipFile对象属性及其方法
namelist()返回ZIP文件中包含的所有文件和文件夹的字符串的列表
getinfo()返回一个关于特定文件的ZipInfo对象,传入字符串必须匹配namelist()返回的字符串列表中的一个
                   ZipInfo对象属性
file_size原来文件大小
compress_size压缩后文件大小

python">import zipfileexampleZip = zipfile.ZipFile(r'E:\example.zip')
print(exampleZip.namelist())
catsInfo = exampleZip.getinfo("example/cats/catnames.txt")
print(catsInfo.file_size)
print(catsInfo.compress_size)>> ['example/', 'example/cats/', 'example/cats/catnames.txt', 'example/cats/zophie.jpg', 'example/spam.txt']
>> 260
>> 198

 2、从ZIP文件中解压缩

extractall()
  • 空白:从ZIP文件中解压缩所有文件和文件夹,并将其放到当前工作目录
  • 传文件夹:从ZIP文件中解压缩所有文件和文件夹,并将其解压缩到那个文件夹
extract()

从ZIP文件中解压缩单个文件或目录。

  • 参数1:解压缩对象,传入字符串必须匹配namelist()返回的字符串列表中的一个
  • 参数2:将文件解压缩到指定的文件夹,而不是当前工作目录。如果指定的文件夹不存在,就会创建

3、创建和添加到ZIP文件

1)创建

以"w"模式打开ZipFile对象,使用write()方法压缩,该方法有两个参数:

  • 参数1:指定需要压缩文件的路径
  • 参数2:指定压缩算法,常用zipfile.ZIP_DEFLATED

注意,write()方法在处理文件夹路径时只会创建一个空的文件夹条目,并不会自动递归地压缩文件夹内的所有内容。

2)添加

"a"模式打开ZipFile对象

python">exampleZip = zipfile.ZipFile(r'open.zip',"w")
print(exampleZip.namelist())
exampleZip.write(r"E:\example\spam.txt",compress_type=zipfile.ZIP_DEFLATED)
exampleZip.close()

如果想将一个目录中所有内容全部压缩,用os.walk()来遍历文件夹结构并手动添加每个文件:

python">with zipfile.ZipFile('new.zip', 'w') as newZip:for foldername, subfolders, filenames in os.walk(r"E:\example"):for filename in filenames:file_path = os.path.join(foldername, filename)newZip.write(file_path, compress_type=zipfile.ZIP_DEFLATED)


http://www.ppmy.cn/ops/136614.html

相关文章

模拟器多开限制ip,如何设置单窗口单ip,每个窗口ip不同

很多手游多开玩家都是利用安卓模拟器实现手游多开,但是很多手游会限制ip,导致多开之后封号等问题,模拟器本身没有更换IP的功能,就需要通过第三方软件来实现 安卓模拟器概述 雷电模拟器、夜神模拟器、mum模拟器等都是目前市场上比…

c#通过网上AI大模型实现对话功能

目录 基础使用给大模型额外提供函数能力用Microsoft.Extensions.AI库实现用json格式回答 基础使用 https://siliconflow.cn/网站有些免费的大模型可以使用,去注册个账户,拿到apikey 引用 nuget Microsoft.Extensions.AI.OpenAI using Microsoft.Extensi…

移动端自动化环境搭建_Android

adb的安装与使用 adb安装adb环境变量adb使用adb常用命令adb简介adb作用 adb安装 选择对应系统进入下载界面,选中版本下载即可: Windows版本:Windows Mac版本:Mac Linux版本:Linux 安装完成后,进行压缩&…

.Net框架以及桌面UI时间线

依托于.net框架,按照时间线可分为以下三种。 桌面应用的UI可分为以下三种。 2024.10.20

工业相机视场角计算

现在常用的是海康威视品牌的相机,打开官网查找现在相机型号,在详细信息里面找到像元尺寸、和分辨率 通过计算得到传感器尺寸 (1.85/1000*40247.4444)mm (1.85*3036/10005.6166)mm 当前使用镜头焦距8mm,可以通过计算得出视场角(…

Redhat 10.0 beta (Red Hat Enterprise Linux)安装教程

Red Hat Enterprise Linux10.0 beta安装教程 一、镜像下载地址二、RHEL 10.0 beta 中的主要变化1、 安全2、动态编程语言、Web 和数据库服务器3、 编译器和开发工具4、身份管理5、Web 控制台 三、RHEL 10.0 beta 安装步骤1、配置虚拟机2、操作系统安装 一、镜像下载地址 1、点…

离散数学---概率, 期望

本文根据 MIT 计算机科学离散数学课程整理(Lecture 22 ~ Lecture 24)。 1 非负整数期望性质 用 N 表示非负整数集合,R 是 N 上的随机变量,则 R 的期望可以表示成: 证明: 换一个形式,把每一列…

LLM的原理理解6-10:6、前馈步骤7、使用向量运算进行前馈网络的推理8、注意力层和前馈层有不同的功能9、语言模型的训练方式10、GPT-3的惊人性能

目录 LLM的原理理解6-10: 6、前馈步骤 7、使用向量运算进行前馈网络的推理 8、注意力层和前馈层有不同的功能 注意力:特征提取 前馈层:数据库 9、语言模型的训练方式 10、GPT-3的惊人性能 一个原因是规模 大模型GPT-1。它使用了768维的词向量,共有12层,总共有1.…