文章目录
Python 09-目录操作
一般的目录操作,使用os模块中的path 子模块
import os.path
1、os模块介绍
os 模块提供了一种使用与操作系统相关的功能的便捷式途径。
- 如果你只是想读写一个文件,请参阅 open(),
- 如果你想操作文件路径,请参阅 os.path 模块,
- 如果你想读取通过命令行给出的所有文件中的所有行,请参阅 fileinput 模块。
- 为了创建临时文件和目录,请参阅 tempfile 模块,
- 对于高级文件和目录处理,请参阅 shutil 模块。
os包括以下这些内容:
- 文件名,命令行参数,以及环境变量。
- 进程参数
- 创建文件对象
- 文件描述符操作
- 查询终端的尺寸
- 文件描述符的继承
- 文件和目录
- Linux 扩展属性
- 进程管理
- 调度器接口
- 其他系统信息
- 随机数
相关内容请查阅python官档。
1.1、os 模块的内容
名称 | 类型 | 说明 |
---|---|---|
os | 模块 | 包含来自 posix 或 nt 的所有函数,例如 取消链接,统计等。 |
os.name | str | 是 ‘posix’ 或 ‘nt’ |
os.curdir | str | 是一个表示当前目录的字符串(总是 ‘.’) |
os.pardir | str | 是一个代表父目录的字符串(总是’…’) |
os.sep | str | 是(或最常见的)路径名分隔符(’/’ 或 ‘\’) |
os.altsep | str | 是备用路径名分隔符(无或“/”) |
os.extsep | str | 是扩展分隔符(总是’.’) |
os.pathsep | str | 是 $PATH 等中使用的组件分隔符 |
os.linesep | str | 是文本文件中的行分隔符(’\r’ 或 ‘\n’ 或 ‘\r\n’) |
os.defpath | str | 是可执行文件的默认搜索路径 |
os.devnull | str | 是空设备的文件路径(’/dev/null’等) |
os.path | 模块 | 是 posixpath 或 ntpath |
1.2、os 模块包含目录和文件的函数
序号 | 函数 |
---|---|
1 | os.chdir(path) 将当前工作目录更改为 path。 |
2 | os.fchdir(fd) 将当前工作目录更改为文件描述符 fd 指向的目录 |
3 | os.getcwd() 返回表示当前工作目录的字符串。 |
4 | os.getcwdb() 返回表示当前工作目录的字节串 (bytestring)。 |
5 | os.get_exec_path(env=None) 返回将用于搜索可执行文件的目录列表 |
6 | os.getlogin() 返回通过控制终端进程进行登录的用户名。 |
7 | os.listdir(path=’.’) 返回一个包含由 path 指定目录中条目名称组成的列表。 |
8 | os.mkdir(path, mode=0o777, *, dir_fd=None) 创建一个名为 path 的目录,应用以数字表示的权限模式 mode。 |
9 | os.makedirs(name, mode=0o777, exist_ok=False) 递归目录创建函数。 |
10 | os.remove(file, *, dir_fd=None) 移除(删除)文件 file。 |
11 | os.rmdir(path, *, dir_fd=None) 移除(删除)目录 path。 |
12 | os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) 将文件或目录 src 重命名为 dst。 |
13 | os.renames(old, new) 递归重命名目录或文件。 |
14 | os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) 将文件或目录 src 重命名为 dst。 |
16 | os.scandir(path=’.’) 返回一个 os.DirEntry 对象的迭代器,它们对应于由 path 指定目录中的条目。 |
17 | os.stat(path, *, dir_fd=None, follow_symlinks=True) 获取文件或文件描述符的状态。 |
18 | os.symlink(src, dst, target_is_directory=False, *, dir_fd=None) 创建一个指向 src 的符号链接,名为 dst。 |
19 | os.unlink(path, *, dir_fd=None) 移除(删除)文件 path。 |
20 | os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True) 设置文件 path 的访问时间和修改时间。 |
21 | os.walk(top, topdown=True, οnerrοr=None, followlinks=False) 生成目录树中的文件名,方式是按上->下或下->上顺序浏览目录树。 |
2、path 模块
os.path 模块常用来进行路径的相关操作。
参见 :
pathlib
模块提供高级路径对象。
该模块在路径名上实现了一些有用的功能:
序号 | 函数 |
---|---|
1 | os.path.abspath(path) 返回路径 path 的绝对路径(标准化的)。 |
2 | os.path.basename(path) 返回路径 path 的基本名称。 |
3 | os.path.commonpath(paths) 接受包含多个路径的序列 paths,返回 paths 的最长公共子路径。 |
4 | os.path.commonprefix(list) 接受包含多个路径的 列表,返回所有路径的最长公共前缀(逐字符比较)。 |
5 | os.path.dirname(path) 返回路径 path 的目录名称。 |
6 | os.path.exists(path) 是否存在的路径或已打开的文件描述符 |
7 | os.path.getatime(path) 返回 path 的最后访问时间。 |
8 | os.path.getmtime(path) 返回 path 的最后修改时间。 |
9 | os.path.getsize(path) 返回 path 的大小,以字节为单位。 |
10 | os.path.isfile(path) 如果 path 是 现有的 常规文件 |
11 | os.path.isdir(path) path是否目录 |
12 | os.path.islink(path) path是否链接 |
13 | os.path.ismount(path) path是否挂载点 |
14 | os.path.join(path, *paths) 智能地拼接一个或多个路径部分 |
15 | os.path.normcase(path) 规范路径的大小写。 |
16 | os.path.split(path) 将路径 path 拆分为一对,即 (head, tail) |
3、当前工作目录 CWD
os.getcwd()
返回一个str类型的目录
>>> import os
>>> f = os.getcwd()
>>> f
'E:\\Project\\Python'
>>> type(f)
<class 'str'>
4、当前目录列表 LD
os.listdir(".")
返回一个list类型的项目列表
>>> list = os.listdir(".")
>>> type(list)
<class 'list'>
>>> for x in list:
... print(x)
...
.idea
601238.db
601238.xlsx
appending.xlsx
Dll1.dll
excel_to_sqlite.py
income.xlsx
My.py
my2.py
sample.xlsx
test.xlsx
tmp.txt
列表.py
5、创建目录 MD
os.makedirs(name, mode=511, exist_ok=False)
无返回,可递归创建子目录
>>> md = os.makedirs("tmp/test/file",exist_ok = True)
>>> md
>>> type(md)
<class 'NoneType'>
>>> os.listdir('.')
['.idea', '601238.db', '601238.xlsx', 'appending.xlsx', 'Dll1.dll', 'excel_to_sqlite.py', 'income.xlsx', 'My.py', 'my2.py', 'sample.xlsx', 'test.xlsx', 'tmp', 'tmp.txt', '列表.py']
6、切换目录 CD
os.chdir(path)
,当前目录为上面代码新建tmp
os.chdir("tmp/test/file")
# 新建一个文件
>>> with open("python.py",'w') as file:
... file.write("hello world")
...
11
7、删除文件或目录
os.remove("python.py")
只能删除一个文件或者目录
>>> dir = os.listdir
>>> dir()
['python.py'] # 当前文件夹下 有个新建的python.py 文件
>>> os.remove("python.py")
>>> dir()
[]
shutil.rmtree()
可以递归的删除某个目录所有的子目录和子文件
>>> import shutil
>>> shutil.rmtree("tmp")