持续更新补充中:
# 引入os和sys模块
import os, sys
1. sys.exit(0):退出程序机制
在debug程序时,我们需要逐步验证code功能,类似于中断调试,运行到该行命令时程序会自动退出,依次排查上序code是否满足预期效果。
2. os.path.basename(path):返回path最后的文件名
import os
path = "/home/backup/file/example.txt"
print(os.path.basename(path))
# 输出结果为:example.txt
3. os.path.isdir(path):判断某一路径path是否为目录
4. os.listdir(path):返回指定文件夹包含的文件或文件夹的名字的列表,它不包括 . 和 .. 即使它在文件夹中。
import os
path = "/home/backup/file/example.txt"
# 判断path是否为目录
if os.path.isdir(path):
dir_list = os.listdir(path)
# 输出所有文件和文件夹
for list_item in dir_list:
print(list_item)
5. os.walk(path):用来遍历文件夹及其子文件夹下所有文件并得到路径
5.1 os.walk() 函数定义:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
5.2 os.walk() 参数含义:
-
top -- 所要遍历目录的地址。
-
topdown -- 可选,默认为 True,优先遍历 top 目录,否则优先遍历 top 的子目录。
-
onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时会调用。
-
followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link)实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
5.3 os.walk() 的返回值:
os.walk 的返回值是一个生成器(generator),返回一个三元元组(root, dirs, files)
- root 指的是当前正在遍历的这个文件夹本身的地址
- dirs 是一个列表,该 list 的内容是该文件夹中所有的目录的名字(不包括子目录)
- files 是一个列表,该 list 的内容是该文件夹中所有的文件(不包括子目录)
5.4 实例说明:
以如下目录结构为例展开函数说明:
import os
path = "/home/backup/example"
for root, dirs, files in os.walk(path):
print(root, dirs, files)
输出结果为:
# topdown 参数为 True, walk 会遍历 top 文件夹与 top 文件夹中每一个子目录
/home/backup/example ['test_file'] ['test.py', 'build.py', 'run.py']
/home/backup/example/test_file [] ['sub_test.py', 'sub_config.py']
进一步地,我们通过借助 os.path.join() 函数,获得所有子文件的路径:
import os
path = "/home/backup/example"
for root, dirs, files in os.walk(path):
for file_item in files:
print(os.path.join(root, file_item))
输出结果为:
/home/backup/example/test.py
/home/backup/example/build.py
/home/backup/example/run.py
/home/backup/example/test_file/sub_test.py
/home/backup/example/test_file/sub_config.py