Python语言提供了丰富的文件和目录访问功能,这使得开发者能够方便地进行文件读写、目录遍历、文件属性查询等操作。这些功能主要通过内置的os和os.path模块,以及io和pathlib等模块来实现。
使用os模块访问文件和目录
os模块提供了很多与操作系统交互的函数,包括文件和目录的访问。
访问目录
· os.listdir(path): 列出指定目录下的所有文件和子目录。
· os.makedirs(name, mode=0o777, exist_ok=False): 创建目录。如果目录已存在且exist_ok为True,则不会抛出异常。
· os.rmdir(path): 删除空目录。
· os.walk(top, topdown=True, onerror=None, followlinks=False): 生成目录树下的文件名,返回一个生成器,对每个目录调用,生成(dirpath, dirnames, filenames)。
访问文件
· os.path.exists(path): 检查文件或目录是否存在。
· os.path.isfile(path): 检查路径是否为文件。
· os.path.isdir(path): 检查路径是否为目录。
· os.path.getsize(path): 返回文件大小,如果文件不存在则引发OSError异常。
使用os.path模块处理路径
os.path模块是os模块的一个子模块,专门用于处理文件路径。
· os.path.join(path1[, path2[, ...]]): 将多个路径组件合并成一个。
· os.path.split(path): 将路径分割成目录和文件名两部分,返回一个元组。
· os.path.basename(path): 返回路径中的文件名。
· os.path.dirname(path): 返回路径中的目录名。
· os.path.abspath(path): 返回指定文件的绝对路径。
· os.path.relpath(path[, start]): 返回从当前目录或指定目录到路径的相对路径。
使用pathlib模块处理路径和文件
pathlib模块提供了面向对象的方式来处理文件系统路径。
· Path.cwd(): 返回当前工作目录。
· Path.home(): 返回用户主目录。
· Path.glob(pattern): 使用通配符模式来查找匹配的文件。
· Path.iterdir(): 迭代目录中的文件和子目录。
· Path.mkdir(mode=0o777, parents=False, exist_ok=False): 创建目录。
· Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None): 打开文件并返回文件对象。
· Path.read_text(encoding=None, errors=None): 以文本模式打开文件并返回内容。
· Path.write_text(data, encoding=None, errors=None): 以文本模式打开文件并写入内容。
使用io模块进行文件读写
io模块提供了用于处理输入/输出流的类和函数,通常与文件读写一起使用。
· io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None): 打开文件并返回相应的文件对象。
示例
下面是一个简单的示例,展示了如何使用这些模块来访问文件和目录:
python复制代码
|
import os |
|
from pathlib import Path |
|
|
|
# 使用os模块 |
|
current_dir = os.getcwd() # 获取当前工作目录 |
|
print(f"Current directory: {current_dir}") |
|
|
|
# 列出目录内容 |
|
contents = os.listdir('.') |
|
print("Directory contents:", contents) |
|
|
|
# 检查文件是否存在 |
|
if os.path.exists('example.txt'): |
|
print("File exists.") |
|
|
|
# 使用pathlib模块 |
|
p = Path('.') # 当前目录的Path对象 |
|
for child in p.iterdir(): # 迭代目录中的每个项 |
|
print(child) |
|
|
|
# 读取文件内容 |
|
file_path = p / 'example.txt' |
|
if file_path.is_file(): |
|
content = file_path.read_text() |
|
print("File content:", content) |
|
|
|
# 写入文件内容 |
|
file_path.write_text("New content for the file.") |
这些模块和函数提供了丰富的功能,使得Python在处理文件和目录时非常灵活和强大。开发者可以根据需要选择