os模块
- chdir(path) 把path设为当前工作目录
- curdir 返回当前文件夹
- environ 包含系统环境变量和值的字典
- extsep 当前操作系统所使用的文件扩展名分隔符
- get_exec_path() 返回可执行文件的搜索路径
- getcwd() 返回当前工作目录
- listdir(path) 返回path目录下的文件和目录列表
- remove(path) 删除指定的文件,要求用户拥有删除文件的权限,并且文件没有只读或其他特殊属性
- rename(src, dst) 重命名文件或目录,可以实现文件的移动,若目标文件已存在则抛出异常,不能跨越磁盘或分区
- replace(old, new) 重命名文件或目录,若目标文件已存在则直接覆盖,不能跨越磁盘或分区
- scandir(path='.') 返回包含指定文件夹中所有DirEntry对象的迭代对象,遍历文件夹时比listdir()更加高效
- sep 当前操作系统所使用的路径分隔符
- startfile(filepath [, operation]) 使用关联的应用程序打开指定文件或启动指定应用程序
- system() 启动外部程序
1 | import os |
os.path模块
- abspath(path) 返回给定路径的绝对路径
- basename(path) 返回指定路径的最后一个组成部分
- commonpath(paths) 返回给定的多个路径的最长公共路径
- commonprefix(paths) 返回给定的多个路径的最长公共前缀
- dirname(p) 返回给定路径的文件夹部分
- exists(path) 判断文件是否存在
- getatime(filename) 返回文件的最后访问时间
- getctime(filename) 返回文件的创建时间
- getmtime(filename) 返回文件的最后修改时间
- getsize(filename) 返回文件的大小
- isabs(path) 判断path是否为绝对路径
- isdir(path) 判断path是否为文件夹
- isfile(path) 判断path是否为文件
- **join(path, *paths) 连接两个或多个path**
- realpath(path) 返回给定路径的绝对路径
- relpath(path) 返回给定路径的相对路径,不能跨越磁盘驱动器或分区
- samefile(f1, f2) 测试f1和f2这两个路径是否引用的同一个文件
- split(path) 以路径中的最后一个斜线为分隔符把路径分隔成两部分,以元组形式返回
- splitext(path) 从路径中分隔文件的扩展名
- splitdrive(path) 从路径中分隔驱动器的名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15path=
'D:\\mypython_exp\\new_test.txt'
#返回路径的文件夹名'D:\\mypython_exp' os.path.dirname(path)
#返回路径的最后一个组成部分'new_test.txt' os.path.basename(path)
#切分文件路径和文件名('D:\\mypython_exp','new_test.txt') os.path.split(path)
'') #切分结果为空字符串 os.path.split(
('','')
'C:\\windows') #以最后一个斜线为分隔符 os.path.split(
('C:\\','windows')
'C:\\windows\\') os.path.split(
('C:\\windows','')
#切分驱动器符号 os.path.splitdrive(path)
('D:','\\mypython_exp\\new_test.txt')
#切分文件扩展名 os.path.splitext(path)
('D:\\mypython_exp\\new_test',='.txt')
使用递归法遍历指定目录下所有子目录和文件。
1 | from os import listdir |
shutil模块
- copy(src, dst) 复制文件,新文件具有同样的文件属性,如果目标文件已存在则抛出异常
- copy2(src, dst) 复制文件,新文件具有原文件完全一样的属性,包括创建时间、修改时间和最后访问时间等等,如果目标文件已存在则抛出异常
- copyfile(src, dst) 复制文件,不复制文件属性,如果目标文件已存在则直接覆盖
- copyfileobj(fsrc, fdst) 在两个文件对象之间复制数据,例如
1
copyfileobj(open('123.txt'),open('456.txt','a'))
- copymode(src, dst) 把src的模式位(mode bit)复制到dst上,之后二者具有相同的模式
- copystat(src, dst) 把src的模式位、访问时间等所有状态都复制到dst上
- copytree(src, dst) 递归复制文件夹
- disk_usage(path) 查看磁盘使用情况
- move(src, dst) 移动文件或递归移动文件夹,也可以给文件和文件夹重命名
- rmtree(path) 递归删除文件夹
- make_archive(base_name,format, root_dir=None,base_dir=None) 创建tar或zip格式的压缩文件
- unpack_archive(filename,extract_dir=None,format=None) 解压缩压缩文件
使用例
如何使用标准库shutil的copyfile()方法复制文件 将C::.zip文件:将C::.zip文件:1
2import shutil #导入shutil模块
'C:\\dir.txt','C:\\dir1.txt') #复制文件 shutil.copyfile(
1 | 'D:\\a','zip','C:\\Python35', shutil.make_archive( |
**将刚压缩得到的文件D:.zip解压缩至D:_unpack文件夹: 下面的代码使用shutil模块的方法删除刚刚解压缩得到的文件夹 1
'D:\\a.zip','D:\\a_unpack') shutil.unpack_archive(
码使用shutil的copytree()函数递归复制文件夹,并忽略扩展名为pyc的文件和以“新”字开头的文件和子文件夹:** 1
'D:\\a_unpack') shutil.rmtree(
1
2from shutil import copytree, ignore_patterns
'C:\\python35\\test','D:\\des_test'ignore=ignore_patterns('*.pyc','新*')) copytree(
实践
把指定文件夹中的所有文件名批量随机化,保持文件类型不变。
1 | from string import ascii_letters |
编写程序,统计指定文件夹大小以及文件和子文件夹数量。
1 | import os |
编写程序,递归删除指定文件夹中指定类型的文件和大小为0的文件。
1 | from os.path import isdir, join, splitext |
- 本文作者: 水蓝络合物
- 本文链接: https://miku39393939.github.io/2022/05/09/PythonCourse9/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!