Python----Python高级(文件操作open,os模块对于文件操作,shutil模块 )

一、文件处理

1.1、文件操作的重要性和应用场景

1.1.1、重要性

数据持久化:

文件是存储数据的一种非常基本且重要的方式。通过文件,我们可 以将程序运行时产生的数据永久保存下来,以便将来使用。

跨平台兼容性:

文件是一种通用的数据交换格式,可以在不同的操作系统和平台 上进行传输和处理。

数据备份与恢复:

定期备份数据到文件有助于防止数据丢失,便于数据恢复。

数据共享:

文件可以轻松地在网络之间共享,使得多人协作成为可能。

配置管理:

许多应用程序使用文件来存储配置信息,方便用户根据需要调整设 置。

日志记录:

文件被广泛用于记录程序运行时的日志,这对于调试和性能监控非常 重要。

1.1.2、应用场景

数据分析:

读取数据文件进行数据分析,或者程序的运行结果输出到文件,以便 于报告或进一步分析。

Web开发:

读取配置文件来设置Web服务器的各种参数,处理用户上传的文件。

系统管理:

读取和写入日志文件以监控系统状态。

文本处理:

读取文本文件,进行搜索、替换等操作,并将处理后的结果保存到文 件中。

游戏开发:

读取账号数据、保存账号数据,管理游戏资源文件。

1.2、文件

文件是一个存储在某种持久性存储介质(如硬盘、固态驱动器或磁带等)上的数据集 合。文件可以包含各种类型的信息,包括文本、图像、音频、视频、应用程序代码以 及其他类型的二进制数据。文件是操作系统用来组织和管理这些数据的主要方式之 一。

1.2.1、文件组成

数据:

文件中存储的实际信息,即用户想要保存的具体信息,如文本、图像或代 码等。
元数据:

关于文件本身的附加信息,包括但不限于文件名、创建日期、文件大 小、文件类型等。
文件系统:

这是操作系统用来组织和管理文件的一种逻辑结构,包括文件的命 名、存储和检索方式。文件系统还负责管理磁盘空间的分配,并确保文件可以被 正确地读写。常见的文件系统有 FAT32、NTFS 等。

1.2.2、文件的属性

文件名:

用于标识文件的唯一名称,通常包含主文件名和扩展名(如 document.txt)。
位置:

文件存储在一个特定的位置,这个位置可以用目录或路径来表示。例如, 在Windows系统中,文件路径可能是 C:\Documents\example.txt;而在Unix like系统中,路径可能是 /home/user/Documents/example.txt。
文件类型:

根据文件的内容和用途,文件可以有多种类型,如文本文件、图像文 件、音频文件等。
文件大小:

文件占用的存储空间大小,通常以字节(B)、千字节(KB)、兆字 节(MB)或吉字节(GB)为单位。
创建日期和时间:

文件被创建的时间戳。
修改日期和时间:

文件最后一次被修改的时间戳。
访问权限:

定义了不同用户对文件的读、写、执行权限。

1.2.3、文件的类型

在Windows系统中,大致可以分为以下几种:

文本文件:

包含可读字符的文件,如.txt、.csv、.html等。

二进制文件:

包含不可直接读的原始二进制数据的文件,如.exe、.jpg、.mp3 等。

可执行文件:

可以被操作系统执行的文件,如.exe(Windows)。

数据文件:

用于存储应用程序数据的文件,如数据库文件、配置文件等。

目录/文件夹:

用于组织和管理其他文件的特殊文件。
在Linux系统中,可以分为以下几种:

-: 普通文件,比如txt、py等。

d:目录文件,比如xx目录,类比Windows中的文件夹。

b:块设备文件,Linux系统中的底层驱动文件。

c:字符设备文件,Linux系统中的底层驱动文件。

l: 链接文件,类似于快捷方式

p:管道文件,用于进程间的通信。

s:套接字文件,用于网络通信的端点,用于网络传输。

1.3、文件的路径

在计算机文件系统中,路径是用来标识文件或目录位置的一种方式。路径有两种主要 的形式:绝对路径和相对路径。这两种路径形式对于在文件系统中导航和访问文件非 常重要。

1.3.1、绝对路径

绝对路径是从文件系统的根目录开始的一条完整路径,它指明了从根目录到达目标文 件或目录的具体步骤。
特点:

不依赖于当前工作目录。

在不同用户或程序间具有一致性。

提供了文件或目录的完整位置信息。
示例:

在Windows系统中,一个绝对路径可能看起来像这样: C:\Users\John\Documents\report.txt

在Linux/Unix系统中,一个绝对路径可能看起来像这 样: /home/john/Documents/report.txt

1.3.2、相对路径

相对路径是指相对于某个起始点(通常是当前工作目录)到达目标文件或目录的路 径。
特点:

取决于当前工作目录的位置。

更加灵活,但可能会因上下文变化而变化。

适用于在同一目录层级或附近层级内的文件访问。
示例:

在Windows系统中,如果当前工作目录是 C:\Users\John\Documents,那么我 想去找同目录下的example.txt的话,就是.\example.txt,如果上级目录下的 example.txt的话,就是..\example.txt。

在Linux/Unix中,如果当前工作目录是 /home/john/Documents,那么我想去找 同目录下的example.txt的话,就是./example.txt,如果上级目录下的 example.txt的话,就是../example.txt。

1.3.3、路径中的特殊符号

. (当前目录):表示当前目录。

.. (上一级目录):表示当前目录的父目录。

1.3.4、 使用场景

绝对路径:

当需要指定确切位置,或者在不同环境(如不同用户的系统)下保持 一致时使用。

相对路径:

当文件位于同一目录或相关联的子目录中时使用,可以使程序更加灵 活和便携。

1.4、文件系统

文件系统是一种逻辑结构,它定义了如何在物理存储设备(如硬盘驱动器、固态硬盘 等)上组织和管理文件。文件系统负责跟踪文件的位置、大小、元数据(如创建时 间、修改时间等),并提供创建、读取、更新和删除文件的接口,方便操作系统或用 户进行文件的操作。
主要功能:

  1. 命名:为文件和目录提供唯一的名称。

  2. 存储:管理文件在存储设备上的物理位置。

  3. 检索:允许用户通过文件名或其他属性查找文件。

  4. 更新:支持文件的创建、修改和删除。

  5. 权限管理:控制用户和组对文件和目录的访问权限。

  6. 磁盘空间管理:跟踪可用和已用磁盘空间,并在必要时进行空间分配和回收。

  7. 错误恢复:在发生错误(如系统崩溃或电源故障)时,尝试恢复文件系统的完整 性。
    常见的文件系统类型:

FAT (File Allocation Table):主要用于较旧的系统或移动存储设备。

NTFS (New Technology File System):Windows 操作系统的默认文件系统。

HFS+ (Hierarchical File System Plus):以前是 macOS 的默认文件系统。

APFS (Apple File System):macOS 和 iOS 设备的新一代文件系统。

ext4 (Fourth Extended File System):Linux 操作系统的常用文件系统。

XFS (XFS File System):另一种用于 Linux 的文件系统。

1.5、文件操作

1.5.1、打开文件

使用open()函数来打开文件,这个函数返回一个文件对象,可以用来 进行后续的读写等操作。

python 复制代码
res = open(file_name, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

file_name:

要打开的文件的路径加名称(包含后缀名),可以是绝对路径也可 以是相对路径。
mode:

打开文件的模式,默认为'r',表示只读模式且以文本模式读取。
buffering:

可选参数,缓冲区大小。0表示无缓冲,1表示行缓冲,更大的整数 表示具体的缓冲区大小。默认为None,表示默认的缓冲策略,大多数情况下, 使用默认值就可以了。
encoding:

可选参数,用于指定文件的编码,仅适用于文本模式,默认值None 表示使用系统的默认编码来打开文本文件。
errors:

可选参数,用于指定如何处理编码和解码错误,对于二进制模式无效。 常见的值有strict、ignore、replace等。
newline:

可选参数,用于控制通用换行符模式的行为。它可以是 None、''、 启用,\n、\r和 '\n'、 '\r'或 '\r\n'。如果设置为 None,则通用换行符模式被 \r\n都被识别为换行符,并以\n的形式在文本模式下读取。 如果设置为其他值,则在该值处进行换行符的转换。
closefd:

可选参数,如果为 True(默认值),则在文件关闭时关闭文件描述 符。如果为 False,则文件描述符在文件关闭时保持打开状态。
open.txt

python 复制代码
open('./open.txt')
# <_io.TextIOWrapper name='./open.txt' mode='r' encoding='utf-8'>

1.5.2、文件模式

'r':read 只读模式(默认值)。如果文件不存在就会触发异常。

'r+':打开文件进行读写,该文件必须存在。

'w':write 写入模式,如果文件存在则覆盖,不存在则创建。

'w+':打开文件进行读写,如果文件存在则覆盖,如果不存在则创建。

'a':追加模式,如果文件存在则在文件末尾追加内容,不存在则创建。

'a+':打开文件进行读写,如果文件存在则在末尾追加,如果不存在则创建。

'x':独占创建模式,如果文件已存在则抛出异常,这可以用来避免覆盖现有文 件。

'b':二进制模式,读写时,数据不会被转换,直接以字节形式处理。

't':文本模式(默认值),读写时,数据会被视为字符串。

1.5.3、读取文件

read(size):size是可选参数,在文本模式下,一次最多读取文件指针后面size 个大小的字符,在二进制模式下,一次最多读取文件指针后面size个大小的字 节,默认size为None,表示一次性读取文件指针后面的所有内容并将其作为字符 串返回。

readline():从文件中读取单行数据。

readlines():读取所有行,并返回一个列表。

python 复制代码
path='./open.txt'
file=open(path)
print(file.read())
'''
111111111111111111111111111111111111111
222222222222222222222222222222222222222
333333333333333333333333333333333333333
444444444444444444444444444444444444444
'''
python 复制代码
path='./open.txt'
file=open(path)
print(file.readline())
'''
111111111111111111111111111111111111111
'''
python 复制代码
path='./open.txt'
file=open(path)
print(file.readlines())
# ['111111111111111111111111111111111111111\n', '222222222222222222222222222222222222222\n', '333333333333333333333333333333333333333\n', '444444444444444444444444444444444444444']

1.5.4、写入文件

write(str):将str的内容覆盖到当前文件指针位置的后面,并将文件指针移动 到新的写入位置。会返回写入的字符数量,写入其他类型的对象时,要先将它们 转化为字符串或字节对象。

writelines():写入一个字符串列表。

python 复制代码
path='./open.txt'
file=open(path,'r+')
file.write('aaaaaaaaaaaaaaaaaa')
file.close()
'''
aaaaaaaaaaaaaaaaaa111111111111111111111
222222222222222222222222222222222222222
333333333333333333333333333333333333333
444444444444444444444444444444444444444
'''
python 复制代码
path='./open.txt'
file=open(path,'r+')
file.writelines(['aaaaaaaaaaaaaaaaaa','bbbbbbbbbbbbbbbbbb'])
file.close()
'''
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbb111
222222222222222222222222222222222222222
333333333333333333333333333333333333333
444444444444444444444444444444444444444
'''

1.5.5、关闭文件

使用close()方法关闭文件。关闭文件是一个重要的操作,因为它释放 了与文件对象关联的系统资源,并确保数据正确地写入存储介质。
功能:

释放资源:关闭文件,释放与文件对象关联的所有系统资源,如文件描述符、缓 冲区等。

刷新缓冲区:在关闭文件之前,它会自动刷新文件的内部缓冲区,确保所有缓冲 的数据都被写入磁盘。

禁止进一步操作:关闭文件后,文件对象不再允许进行读取、写入或其他操作。
重要性:

资源管理:文件描述符是有限的资源,如果不关闭文件,可能会导致资源泄漏, 特别是在打开大量文件时。

数据完整性:确保所有缓冲的数据都写入磁盘,防止数据丢失。尤其是在写入操 作后,如果不关闭文件,可能会导致最后写入的数据没有保存。

防止错误:关闭文件可以防止对已关闭文件的非法操作,这些操作可能会引发异 常。

提高效率:关闭不再需要的文件可以释放系统资源,提高程序的整体效率。

清理操作:在关闭文件时,可以执行一些清理操作,如关闭网络连接或释放其他 相关资源。

python 复制代码
path='./open.txt'
file=open(path,'r+')
file.close()

1.5.6、with语句

with语句是一种上下文管理器(context manager),用于简化资源 的打开和关闭过程,确保资源在不需要时得到适当的释放。这种机制常用于文件操 作、网络连接、锁等资源的处理,可以避免资源泄露和出现其他资源管理问题。
with expression [as variable]:

with-block
表达式(expression):这个表达式必须返回一个实现了上下文管理器协议的对 象,也就是说,它需要包含 __enter__和 __exit__两个方法。
as子句:这是可选的。如果提供了as子句,那么 expression中 法的返回值将被赋值给变量。
with-block:这个代码块是 __enter__方 with语句的主体,在执行这个代码块之前,会首先 调用上下文管理器的 __enter__方法。当 with-block执行完毕后,不论是因为 正常完成还是因为异常,都会调用上下文管理器的 __exit__方法,该方法负责 关闭文件。
执行流程为:

执行表达式:首先执行 调用 expression,返回一个上下文管理器对象。

enter() 方法:上下文管理器对象的 enter() 方法被调用,该 方法通常用于执行一些初始化操作,如打开文件。

执行语句块:语句块中的语句按照顺序执行。

调用 exit() 方法:当语句块执行完毕后,上下文管理器对象的 exit() 方法被调用,该方法通常用于执行清理操作,如关闭文件或释放数 据库会话。
使用 with 语句的好处 :

自动资源管理:

不需要手动调用

更好的错误处理:

close 方法,代码更简洁。 exit() 方法可以包含异常处理代码,确保在发生异常时 资源得到妥善处理。

更好的代码组织:

with 语句有助于将相关的操作组织在一起,使代码更加清 晰。

python 复制代码
with open(r"open.txt","w+") as f:
    f.writelines('大家好')
# 大家好

1.6、文件指针的操作

1.6.1、获取文件指针的位置

tell()

tell()函数没有参数,它的功能就是返回文件指针当前位置相对于文件开头的偏移量。 这个偏移量是一个整数,表示从文件开头到当前读取位置的字节数。
注意事项 :

tell 方法仅在文件被打开用于读取时才有意义,因为在写入模式下,文件指针 的位置会随着写入操作而改变。

在读取模式下, tell 方法返回的是当前读取位置相对于文件开头的偏移量。

其返回值是字节数,不是字符数,对于utf-8的编码格式来说,一个汉字占三个字 节,所以读取中文时,字符数与字节数是不一样的。

python 复制代码
with open(r"open.txt","r") as f:
    print(f.tell())
# 0

1.6.2、改变文件指针的位置

seek()

seek(offset, whence=0)
offset:

表示相对于whence的偏移量,是一个整数。这个偏移量可以是正数,也可 以是负数。正数表示向文件末尾方向移动,负数表示向文件开头方向移动,0则表示 不偏移。

whence:

是一个可选的参数,默认为0。它指定了offset的起始位置,可以是以下 三个值之一: 0:表示从文件开头开始计算偏移量(默认值)。

1:表示从当前文件指针位置开始计算偏移量。

2:表示从文件末尾开始计算偏移量。
注意事项:

seek 方法在文本模式和二进制模式下都有效,但文本模式whence只能使用默认 值,不能自己修改。

seek 方法基于字节偏移量。这意味着即使文件包含多字节字符, 仍然是字节偏移量。

python 复制代码
with open(r"open.txt","r") as f:
    print(f.tell())#0
    f.seek(5)
    print(f.tell())#5

二、os模块对于文件操作

2.1、调用操作系统命令

os.system()调用windows系统的记事本程序

python 复制代码
import os
os.system("notepad.exe")


os.system()调用windows系统中ping命令

python 复制代码
import os
os.system("ping www.baidu.com")


os.startfile()直接调用可执行文件

python 复制代码
import os
os.startfile('C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe')

2.2、获取文件大小

os.path.getsize(path)

path (字符串) - 文件的路径。

返回一个整数,表示文件的大小(以字节为单位)。如果文件不存在或无法访问,会 抛出异常。

python 复制代码
import os
path='./open.txt'
print(os.path.getsize(path))#73

2.3、获取文件的最后修改时间

os.path.getmtime(path)

path (字符串) - 文件的路径

返回一个浮点数,表示文件的最后修改时间,自纪元(1970年1月1日 00:00:00 UTC)以来的秒数,可以搭配time模块进行格式化。如果文件不存在或无法访问,会 抛出异常。

python 复制代码
import os
path='./open.txt'
print(os.path.getmtime(path))#1737371817.6055775

2.4、获取文件的创建时间

os.path.getctime(path)

path (字符串) - 文件的路径。

返回一个浮点数,表示文件的最后修改时间,自纪元(1970年1月1日 00:00:00 UTC)以来的秒数,可以搭配time模块进行格式化。如果文件不存在或无法访问,会 抛出异常。

python 复制代码
import os
path='./open.txt'
print(os.path.getctime(path))#1737340129.5444336

2.5、获取文件的最后访问时间

os.path.getatime(path)

path (字符串) - 文件的路径

返回一个浮点数,表示文件的最后修改时间,自纪元(1970年1月1日 00:00:00 UTC)以来的秒数,可以搭配time模块进行格式化。如果文件不存在或无法访问,会 抛出异常。

python 复制代码
import os
path='./open.txt'
print(os.path.getatime(path))#1737371872.8743682

2.6、创建目录

os.mkdir(path, mode=0o777)

path (字符串) - 要创建的目录的路径。

mode (整型,可选) - 设置新创建目录的权限位。默认值是 0o777(八进制表 示),意味着所有人都有读、写和执行权限,只针对Linux系统,Windows系统 会忽略。
如果目录创建成功,则函数不返回任何内容。如果指定的路径已经存在就会抛出异 常,如果路径是无效的,或者由于权限不足等原因无法创建目录,也会抛出异常。
注意事项

os.mkdir 只能创建一级目录,如果父目录不存在,则会抛出异常。

如果需要创建多级目录结构,可以使用 需的中间目录。

python 复制代码
import os
os.mkdir('./hhhh')

2.7、删除目录

os.rmdir(path)

path (字符串) - 要删除的空目录的路径。

如果目录删除成功,则函数不返回任何内容。如果指定的路径不存在,则会抛出异 常,如果路径不是一个空目录,或者由于权限不足等原因无法删除目录,也会抛出此 异常。
注意事项

os.rmdir只能删除空目录。如果目录中包含文件或其他目录, 将无法删除它,并且会抛出异常。

python 复制代码
import os
os.rmdir('./hhhh')

2.8、改变当前工作目录

os.chdir(path)

path (字符串) - 要切换到的目录的路径。如果指定的路径不存在、指定的路径不 是一个目录、没有权限更改到指定的目录就会抛出异常。

如果目录切换成功,则函数不返回任何内容。

python 复制代码
import os
print(os.getcwd())#d:\project
os.chdir('./aaaaaaaaaaaa')
print(os.getcwd())#d:\project\aaaaaaaaaaaa

2.9、获取当前工作目录

os.getcwd()

该函数没有参数,但会返回一个字符串,表示当前工作目录的路径。
注意事项

os.getcwd() 返回的是字符串形式的路径。

在不同的操作系统中,路径的表示方式可能不同。例如,在 Windows 中路径通 常使用反斜杠 \,而在 Unix/Linux 系统中使用正斜杠 /。
常用于:

当需要在脚本中确定当前的工作位置时。

在进行文件操作之前,需要知道文件的相对路径是基于哪个目录。

当需要在不同目录之间切换时,但之后想要回到原始目录。

python 复制代码
import os
print(os.getcwd())#d:\project

2.10、列出目录下的所有内容

os.listdir(path)

path (字符串) - 要列出内容的目录的路径。如果省略,默认为当前工作目录。如 果指定的路径不存在、指定的路径不是一个目录、没有权限读取指定的目录就会 抛出异常。

返回一个列表,其中包含指定路径下的所有文件和子目录的名称。
注意事项:

os.listdir 不会递归地列出子目录中的内容。它只列出直接位于指定目录下的 文件和子目录。

返回的列表中只包含名称,不包含路径。如果需要完整路径,你需要将目录名称 与路径结合起来。

如果目录为空,返回的列表将是空的。

在使用 os.listdir 时,应该考虑到可能出现的异常,并适当处理它们,以确保 代码的健壮性。

python 复制代码
import os
print(os.listdir())#['hhh']

2.11、重命名目录

os.rename(src, dst)

src (字符串) - 要重命名的文件或目录的当前路径。

dst (字符串) - 文件或目录的新名称和路径。

如果重命名成功,则函数不返回任何内容。

python 复制代码
import os
path='./open.txt'
os.rename(path,'./openwith.txt')

2.12、检查路径是否为目录

os.path.isfile(path)

path (字符串) - 要检查的路径

如果指定的路径是一个目录,返回 True;否则返回 False
注意事项:

os.path.isdir 不会抛出异常。如果指定的路径不存在,它会返回 不是抛出异常。

如果路径存在但不是目录, os.path.isdir 也会返回False

路径可以是绝对路径,也可以是相对路径。

python 复制代码
import os
path='./openwith.txt'
os.path.isdir(path)#False

2.13、检查路径是否为文件

os.path.isfile(path)

path (字符串) - 要检查的路径

如果指定的路径是一个文件,返回 True;否则返回 False
主要用途:

在处理文件之前,确认指定的路径确实是一个文件,这样可以避免对目录执行文 件操作。

在脚本中执行条件逻辑时,根据路径是否为文件来决定下一步操作。

在文件处理脚本中,区分文件和目录,以便进行适当的操作。

python 复制代码
import os
path='./openwith.txt'
os.path.isfile(path)#True

2.14、路径拼接

os.path.join(path, *paths)

path (字符串) - 起始路径,通常是一个目录路径。

*paths (可变参数) - 需要连接到 path 的其他路径片段。

返回一个字符串,表示将所有路径片段连接后的完整路径。
os.path.join()的作用:

合并路径:

将多个路径组件合并成一个单一的路径字符串。

处理分隔符:

它会根据操作系统自动添加或删除路径分隔符(例如,在 Windows 上是反斜杠 \,在 Unix/Linux 上是正斜杠 /)。

消除冗余分隔符:

如果路径组件之间有多余的分隔符,os.path.join() 会自动处 理,避免产生错误的路径。

python 复制代码
import os  

base_path = '/user/files'  
file_name = 'document.txt'  
full_path = os.path.join(base_path, file_name)  

print(full_path)  # /user/files/document.txt

2.15、路径拆分

head, tail = os.path.split(path)

path: 表示要分割的路径。

head: 它是 path 的目录路径

tail: 它是 path 的文件名
主要用途:

从完整路径中提取文件名或目录名。

用于文件处理时,需要单独操作文件名和路径的其他部分。

在遍历文件系统时,帮助确定每个文件的上级目录。

python 复制代码
import os  


full_path = '/user/files/document.txt'  
path, file_name = os.path.split(full_path)  

print(path)      # /user/files  
print(file_name) # document.txt

2.16、获取绝对路径

os.path.abspath(path)

path (字符串) - 要转换为绝对路径的相对路径或文件路径

返回一个字符串,表示转换后的绝对路径。
主要用途:

在脚本中确保使用的是文件的绝对路径,这样即使当前工作目录改变,脚本也能 正确地定位文件。

将相对路径转换为绝对路径,以便在不同的环境中更可靠地引用文件或目录。

在需要输出或记录文件的完整位置时使用

python 复制代码
import os  

relative_path = 'openwith.txt'  
absolute_path = os.path.abspath(relative_path)  

print(absolute_path)  #d:\project\openwith.txt

2.17、检查路径是否存在

os.path.exists(path)

path: 表示要检查的路径。

path_exists: 返回一个布尔值,如果路径存在则返回 则返回 False。
主要用途:

在执行文件操作之前,确认文件或目录是否存在,以避免引发不必要的错误。

在脚本中执行条件逻辑时,根据文件或目录的存在与否来决定下一步操作。

在文件备份、清理或其他自动化任务中,检查特定文件或目录是否应该被处理。

python 复制代码
import os  

path_to_check = './openwith.txt'  
exists = os.path.exists(path_to_check)  

print(exists)  # True

2.18、遍历所有文件和目录

os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

其中,top:是要遍历的目录。topdown:可选,True,先遍历top目录再遍历子目录。

返回三元组(root、dirs、files):

root:当前正在遍历的文件夹本身

dirs:一个列表,该文件夹中所有的目录的名字

files:一个列表,该文件夹中所有的文件的名字

python 复制代码
import os

path = os.getcwd()
list_files = os.walk(path,topdown=False)

for root,dirs,files in list_files:
  for name in files:
    print(os.path.join(root,name))
  for name in dirs:
    print(os.path.join(root,name))


'''
d:\project\.idea\inspectionProfiles\profiles_settings.xml
d:\project\.idea\.gitignore
d:\project\.idea\project.iml
d:\project\.idea\misc.xml
d:\project\.idea\modules.xml
d:\project\.idea\workspace.xml
d:\project\.idea\inspectionProfiles
d:\project\__pycache__\string_utils.cpython-312.pyc
d:\project\.idea
d:\project\__pycache__
'''

2.19、递归遍历目录下所有文件

python 复制代码
import os
allfile=[]

def getFiles(path,level):
  childFiles = os.listdir(path)
  for file in childFiles:
    filepath = os.path.join(path,file)
    if os.path.isdir(filepath):
      getFiles(filepath,level+1)
    allfile.append("\t"*level+filepath)


getFiles(os.getcwd(),0)

for f in reversed(allfile):
  print(f)

三、shutil模块

shutil模块是python标准库中提供的,主要用来做文件和文件夹的拷贝、移动、删除等;还可以做文件和文件夹的压缩、解压缩操作。
os模块提供了对目录或文件的一般操作。shutil模块作为补充,提供了移动、复制、压缩、解压等操作,这些os模块都没有提供。

文件的拷贝

python 复制代码
import shutil


shutil.copyfile("a.txt","a_copy.txt")

递归的拷贝文件夹内容

python 复制代码
import shutil

#"音乐"文件夹不存在才能用

shutil.copytree("电影/学习","音乐",ignore=shutil.ignore_patterns("*.html","*.htm"))

将文件夹所有内容压缩

python 复制代码
import shutil
import zipfile
#将"电影/学习"文件夹下所有内容压缩到"音乐2"文件夹下生成movie.zip
shutil.make_archive("音乐2/movie","zip","电影/学习")


#压缩:将指定的多个文件压缩到一个zip文件
z = zipfile.ZipFile("a.zip","w")
z.write("1.txt")
z.write("2.txt")
z.close()

将压缩包解压缩到指定文件夹

python 复制代码
import shutil
import zipfile
#解压缩:
z2 = zipfile.ZipFile("a.zip","r")
z2.extractall("d:/") #设置解压的地址
z2.close()

四、思维导图

相关推荐
用户8356290780516 分钟前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_7 分钟前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机7 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机8 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机8 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机8 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i8 小时前
drf初步梳理
python·django
每日AI新事件8 小时前
python的异步函数
python
这里有鱼汤9 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook18 小时前
Manim实现脉冲闪烁特效
后端·python·动效