芜湖哪些公司做公司网站,安卓代理ip软件,网络规划设计 网站建设,网站开发费入账文章目录 Python文件与目录操作管理详解一、文件操作基础1. 文件操作的基本流程2. 文件打开模式3. 基本文件操作代码示例 二、目录操作1. 常用目录操作函数2. 目录操作代码示例 三、路径操作1. 路径操作对比2. 路径操作代码示例 四、高级文件操作1. 文件复制、移动和删除2. 文件… 文章目录 Python文件与目录操作管理详解一、文件操作基础1. 文件操作的基本流程2. 文件打开模式3. 基本文件操作代码示例 二、目录操作1. 常用目录操作函数2. 目录操作代码示例 三、路径操作1. 路径操作对比2. 路径操作代码示例 四、高级文件操作1. 文件复制、移动和删除2. 文件信息获取 五、临时文件和目录六、文件遍历与查找1. 遍历目录2. 文件查找 七、文件编码处理八、最佳实践总结 Python文件与目录操作管理详解
文件与目录操作是编程中非常基础但重要的功能Python提供了多种方式来处理文件和目录。下面我将用通俗易懂的方式结合代码示例和图表为你全面讲解Python中的文件与目录操作。
一、文件操作基础
1. 文件操作的基本流程
文件操作通常遵循打开→操作→关闭的流程
[打开文件] → [读取/写入] → [关闭文件]2. 文件打开模式
Python中使用open()函数打开文件可以指定不同的模式
模式描述文件存在文件不存在‘r’只读正常打开报错‘w’写入清空内容创建新文件‘a’追加保留内容创建新文件‘x’创建报错创建新文件‘b’二进制模式与其他模式组合使用‘t’文本模式(默认)与其他模式组合使用‘’读写模式与其他模式组合使用
3. 基本文件操作代码示例
# 写入文件
with open(example.txt, w) as f:f.write(Hello, World!\n)f.write(这是第二行内容)# 读取文件
with open(example.txt, r) as f:content f.read() # 读取全部内容print(content)# 按行读取
with open(example.txt, r) as f:for line in f: # 逐行读取print(line.strip()) # strip()去掉行尾换行符二、目录操作
Python中目录操作主要通过os和pathlib模块实现。
1. 常用目录操作函数
操作os模块pathlib.Path创建目录os.mkdir()Path.mkdir()递归创建os.makedirs()Path.mkdir(parentsTrue)删除目录os.rmdir()Path.rmdir()递归删除shutil.rmtree()无直接方法列出目录os.listdir()Path.iterdir()路径拼接os.path.join()/运算符或Path.joinpath()判断存在os.path.exists()Path.exists()
2. 目录操作代码示例
import os
from pathlib import Path# 使用os模块
os.mkdir(test_dir) # 创建目录
print(os.listdir(.)) # 列出当前目录内容
os.rmdir(test_dir) # 删除目录# 使用pathlib模块(更现代的方式)
path Path(test_dir)
path.mkdir(exist_okTrue) # 创建目录exist_okTrue避免已存在时报错
print([p.name for p in path.parent.iterdir()]) # 列出父目录内容
path.rmdir() # 删除目录三、路径操作
处理文件路径是文件操作中的常见需求。
1. 路径操作对比
需求os.pathpathlib.Path获取文件名os.path.basename(path)Path(path).name获取目录os.path.dirname(path)Path(path).parent拼接路径os.path.join(a, b)Path(a)/b获取绝对路径os.path.abspath(path)Path(path).absolute()判断文件os.path.isfile(path)Path(path).is_file()判断目录os.path.isdir(path)Path(path).is_dir()
2. 路径操作代码示例
from pathlib import Path# 创建Path对象
p Path(/home/user/documents/report.txt)# 获取各部分
print(p.name) # report.txt
print(p.stem) # report (不带后缀的文件名)
print(p.suffix) # .txt (文件扩展名)
print(p.parent) # /home/user/documents# 路径拼接
new_p p.parent / backup / p.name
print(new_p) # /home/user/documents/backup/report.txt# 判断路径类型
print(p.is_file()) # 是否是文件
print(p.is_dir()) # 是否是目录四、高级文件操作
1. 文件复制、移动和删除
import shutil
from pathlib import Path# 复制文件
shutil.copy(source.txt, destination.txt)# 复制目录(递归)
shutil.copytree(source_dir, destination_dir)# 移动/重命名文件或目录
shutil.move(old_name.txt, new_name.txt)# 删除文件
Path(file_to_delete.txt).unlink() # 或者 os.remove()# 递归删除目录
shutil.rmtree(directory_to_delete)2. 文件信息获取
from pathlib import Path
import timep Path(example.txt)# 获取文件大小(字节)
size p.stat().st_size
print(f文件大小: {size} 字节)# 获取修改时间
mtime p.stat().st_mtime
print(f修改时间: {time.ctime(mtime)})# 获取创建时间(Windows)
ctime p.stat().st_ctime
print(f创建时间: {time.ctime(ctime)})五、临时文件和目录
Python可以方便地创建临时文件和目录
import tempfile# 创建临时文件
with tempfile.NamedTemporaryFile(deleteFalse) as tmp:print(f临时文件路径: {tmp.name})tmp.write(b临时内容)# 创建临时目录
with tempfile.TemporaryDirectory() as tmpdir:print(f临时目录路径: {tmpdir})# 在这里使用临时目录
# 退出with块后临时目录自动删除六、文件遍历与查找
1. 遍历目录
from pathlib import Path# 递归遍历目录
for item in Path(.).rglob(*):print(item)# 非递归遍历
for item in Path(.).iterdir():if item.is_file():print(f文件: {item})elif item.is_dir():print(f目录: {item})2. 文件查找
from pathlib import Path# 查找所有.py文件
py_files list(Path(.).glob(*.py))
print(py_files)# 递归查找所有.txt文件
txt_files list(Path(.).rglob(*.txt))
print(txt_files)七、文件编码处理
处理不同编码的文件
# 读取GBK编码文件
with open(gbk_file.txt, r, encodinggbk) as f:content f.read()# 写入UTF-8文件
with open(utf8_file.txt, w, encodingutf-8) as f:f.write(这是UTF-8编码的内容)八、最佳实践总结
优先使用pathlib比os.path更现代、更面向对象使用with语句确保文件正确关闭处理异常文件操作可能失败(权限、不存在等)注意路径跨平台Windows用\Linux/macOS用/pathlib会自动处理大文件处理避免一次性读取大文件使用逐行或分块读取
# 良好实践示例
from pathlib import Pathfile_path Path(data) / large_file.txt
try:with open(file_path, r, encodingutf-8) as f:for line in f:process_line(line) # 逐行处理大文件
except FileNotFoundError:print(f文件 {file_path} 不存在)
except PermissionError:print(f没有权限访问 {file_path})通过以上内容你应该对Python中的文件和目录操作有了全面的了解。记住实践是最好的学习方式多写代码来巩固这些知识