文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

17 个实用 Python 文件与目录管理的技巧

2024-11-29 19:39

关注

1. 列出目录中的文件

技巧说明: 使用os模块来获取目录下的所有文件名。

import os

def list_files(directory):
    """列出指定目录下的所有文件"""
    files = os.listdir(directory)
    print("文件列表:", files)

list_files("./example_directory")  # 假设example_directory是你的目标目录

2. 检查文件是否存在

技巧说明: 使用os.path.exists()来避免错误地操作不存在的文件。

file_path = "./example.txt"
if os.path.exists(file_path):
    print("文件存在")
else:
    print("文件不存在")

3. 读取文件内容

技巧说明: 使用open()函数以读取模式('r')打开文件,然后用.read()方法读取内容。

with open('example.txt', 'r') as file:
    content = file.read()
print("文件内容:", content)

4. 写入文件

技巧说明: 使用open()函数以写入模式('w')打开文件,.write()方法用于写入数据。

with open('new_file.txt', 'w') as file:
    file.write("Hello, Python!")

5. 追加内容到文件

技巧说明: 使用追加模式('a')可以在文件末尾添加内容。

with open('new_file.txt', 'a') as file:
    file.write("\nAdding more content.")

6. 重命名文件

技巧说明: os.rename()用于更改文件名。

old_name = 'old_file.txt'
new_name = 'renamed_file.txt'
os.rename(old_name, new_name)

7. 删除文件

技巧说明: 小心使用os.remove(),删除后的文件无法恢复。

os.remove('to_delete.txt')

8. 创建目录

技巧说明: 使用os.mkdir()创建单级目录,os.makedirs()创建多级目录。

os.mkdir('new_directory')
os.makedirs('nested/directory/path')

9. 删除目录

技巧说明: 删除空目录用os.rmdir(),删除非空目录用shutil.rmtree()。

os.rmdir('empty_directory')
import shutil
shutil.rmtree('directory_to_remove', ignore_errors=True)  # 注意:此操作不可逆

10. 遍历目录树

技巧说明: 使用os.walk()遍历目录及其子目录。

for root, dirs, files in os.walk('.'):
    print(f"当前路径: {root}")
    print("子目录:", dirs)
    print("文件:", files)
    print("--------------------")

11. 复制文件

技巧说明: 使用shutil.copy()或shutil.copy2()来复制文件。

shutil.copy('source.txt', 'destination.txt')

12. 移动或重命名文件和目录

技巧说明: 使用shutil.move()可以移动文件或目录,同时它也支持重命名。

shutil.move('old_location.txt', 'new_location.txt')

高级和优化技巧

13. 文件读写性能优化 - 批量处理

技巧说明: 当处理大量数据时,一次性读取整个文件可能会消耗大量内存。可以分批处理数据,特别是处理大文件时。

batch_size = 1000
lines = []
with open('large_file.txt', 'r') as file:
    for i, line in enumerate(file):
        lines.append(line)
        if (i + 1) % batch_size == 0 or i + 1 == os.path.getsize('large_file.txt'):
            process_batch(lines)  # 假设这是处理一批数据的函数
            lines = []

14. 文件内容过滤与搜索

技巧说明: 在读取文件时,可以即时过滤出需要的内容,提高效率。

search_term = "Python"
with open('content.txt', 'r') as file:
    for line in file:
        if search_term in line:
            print(line.strip())

15. 使用上下文管理器自定义文件操作

技巧说明: 定义一个上下文管理器,可以更好地控制资源,比如自动关闭文件。

from contextlib import contextmanager

@contextmanager
def managed_file(name):
    try:
        f = open(name, 'r')
        yield f
    finally:
        f.close()

with managed_file('data.txt') as file:
    for line in file:
        print(line)

16. 文件压缩与解压

技巧说明: 使用zipfile和tarfile模块处理压缩文件。

import zipfile

# 压缩文件
with zipfile.ZipFile('archive.zip', 'w') as zipf:
    zipf.write('file_to_compress.txt')

# 解压文件
with zipfile.ZipFile('archive.zip', 'r') as zipf:
    zipf.extractall('unzipped_files')

17. 大文件分割与合并

技巧说明: 对于非常大的文件,可能需要分割成小块处理,之后再合并。

# 分割文件示例(简化)
def split_file(file_name, chunk_size=1024*1024):
    with open(file_name, 'rb') as f:
        i = 0
        while True:
            chunk = f.read(chunk_size)
            if not chunk:
                break
            with open(f'split_{i}.part', 'wb') as chunk_file:
                chunk_file.write(chunk)
            i += 1

# 合并文件示例
def merge_files(output_name, part_prefix='split_', part_extension='.part'):
    with open(output_name, 'wb') as out_file:
        for i in range(1, 100):  # 假设最多有100个部分
            part_file_name = f'{part_prefix}{i}{part_extension}'
            if os.path.exists(part_file_name):
                with open(part_file_name, 'rb') as chunk_file:
                    out_file.write(chunk_file.read())
            else:
                break

# 调用示例
# split_file('largefile.txt')
# merge_files('mergedfile.txt')
来源:PythonAI与图像处理内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯