我们在实际开发中,经常需要对文件进行读取、遍历、修改等操作,通过 python 的标准内置os模块,能够以简洁高效的方式完成这些操作。常见的操作整理如下:
导入os
模块:
import os
listdir
获取文件及目录列表,像linux中的ls
命令。
print(os.listdir())
getcwd
获取当前目录路径,类似linux下的pwd
命令。
print(os.getcwd())
chdir
更换目录,类型linux下的cd
命令。
# 先存一下当前路径
cur_path = os.getcwd()
# cur_path = r"\Undergraduate\School\Programme\Python_Learn"
# 打印当前路径
print(os.getcwd())
# 更改路径
os.chdir("/")
print(os.getcwd())
# 改回之前的路径 cur_path
os.chdir(cur_path)
print(os.getcwd())
一定需要先记录当前路径,因为之后改过路径后就无法得到之前的路径位置了。(可能我比较菜,不会
stat
获得文件及目录基本信息。
print(os.stat(os.getcwd()))
walk
递归遍历目录。walk
是个很常用的函数。
os.walk(top, topdown=True, onerror=None, followlinks=False)
参数:
top
:需要遍历目录的地址。topdown
:为真,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)。onerror
:需要一个 callable 对象,当walk需要异常时,会调用。followlinks
:如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。os.walk
的返回值是一个生成器(generator),也就是说我们需要用循环不断的遍历它(不可以直接print
),来获得所有的内容。
每次遍历的对象都是返回的是一个三元元组(root,dirs,files)
root
:所指的是当前正在遍历的这个文件夹的本身的地址dirs
:是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)files
:同样是 list , 内容是该文件夹中所有的文件(不包括子目录)for root, dirs, files in os.walk(os.getcwd()):
print("root: {}".format(root))
for dir in dirs:
print(os.path.join(root, dir))
for file in files:
print(os.path.join(root, file))
[Python中os.walk函数的用法(遍历文件夹下文件并获得路径)-CSDN博客](https://blog.csdn.net/qq_41562433/article/details/82995098?ops_request_misc=%7B%22request%5Fid%22%3A%22170031753116800211581878%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=170031753116800211581878&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-5-82995098-null-null.142v96pc_search_result_base3&utm_term=walk &spm=1018.2226.3001.4187)