一. 简介
前面文章简单学习了 Python3 中 OS模块中的文件/目录的部分函数。
本文继续来学习 OS 模块中文件、目录的操作方法:os.walk() 方法、os.write()方法
二. Python3 OS模块中的文件/目录方法
1. os.walk() 方法
os.walk() 方法用于生成目录树中的文件名,通过遍历目录及其子目录递归地生成文件名,os.walk() 方法是一个生成器,每次产生一个三元组 (dirpath, dirnames, filenames)。该方法
是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。
walk()方法语法格式如下:
os.walk(top, topdown=True, onerror=None, followlinks=False)
参数:
top
: 需要遍历的根目录路径。topdown
: 可选参数,默认为True
。如果设置为True
,则先于其子目录返回目录信息;如果设置为False
,则在处理完所有子目录后才返回目录信息。onerror
: 可选参数,是一个接收异常作为唯一参数的函数。当os.walk()
遇到问题(例如权限错误)时会调用此函数。默认情况下,遇到错误时会忽略它们。followlinks
: 可选参数,默认为False
。如果设置为True
,os.walk()
将跟随符号链接指向的目录。注意,这可能会导致无限循环,如果存在循环链接的话。
返回值:
每次产生一个三元组 (dirpath, dirnames, filenames):
dirpath: 字符串形式的路径,表示当前遍历的目录。
dirnames: 保存当前目录下所有子目录名称(不含路径)的列表。
filenames: 保存当前目录下所有非目录文件名称(不含路径)的列表。
示例如下:
#!/usr/bin/python3
import os
for str_cur_path, dirs, files in os.walk(".", topdown=True):
for file_name in files:
#拼接路径
print(os.path.join(str_cur_path, file_name))
for dir_name in dirs:
print(os.path.join(str_cur_path, dir_name))
运行后结果如下:
2. os.write() 方法
os.write() 方法用于写入字符串到文件中,返回实际写入的字符串长度。通过文件描述符进行操作。文件描述符是一个由操作系统提供的抽象,代表了打开的文件、管道或其他I/O资源。
write()方法语法格式如下:
os.write(fd, data)
参数:
fd -- 文件描述符。
str -- 写入的字符串。
返回值: 返回实际写入的字符串长度。
示例如下:
#!/usr/bin/python3
import os,sys
path = "./test.txt"
info = "wonderful"
fd = os.open(path, os.O_RDWR|os.O_CREAT)
#向文件中写入数据
data_len = os.write(fd, bytes(info, 'utf-8'))
print("write data_len:", data_len)
os.close(fd)
#读取文件的内容
r_fd = os.open(path, os.O_RDONLY)
read_data = os.read(r_fd, 60)
print(f"read bytes: {read_data.decode()}")
os.close(fd)
运行结果如下: