Python读写文件的15个高效技巧

在这里插入图片描述

文末赠免费精品编程资料~~

技巧1:使用with语句自动管理文件

在Python中,使用with语句打开文件可以确保文件在操作完成后被正确关闭,即使过程中发生错误。

# 使用with语句安全地读取文件  
with open('example.txt', 'r') as file:  
    content = file.read()  
print(content)  

技巧2:逐行读取文件

对于大型文件,逐行读取可以节省内存。

with open('large_file.txt', 'r') as file:  
    for line in file:  
        print(line.strip())  # 去除行尾的换行符  

技巧3:使用readline()方法

readline()方法每次只读取一行,适用于处理非常大的文件。

with open('file.txt', 'r') as file:  
    line = file.readline()  
    while line:  
        print(line.strip())  
        line = file.readline()  

技巧4:使用readlines()返回文件所有行

readlines()将文件中的每一行作为一个元素存储在列表中。

with open('file.txt', 'r') as file:  
    lines = file.readlines()  
for line in lines:  
    print(line.strip())  

技巧5:写入文件

使用write()方法将字符串写入文件。

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

技巧6:追加内容到文件

使用a模式追加内容,避免覆盖原有内容。

with open('log.txt', 'a') as file:  
    file.write("New log entry.\n")  

技巧7:使用seek()定位文件指针

seek()方法可以改变文件读写的位置。

with open('file.txt', 'r+') as file:  
    file.seek(10)  # 移动到第10个字符位置  
    print(file.read(5))  # 读取接下来的5个字符  

技巧8:使用tell()获取当前文件指针位置

tell()返回文件当前读写位置。

with open('file.txt', 'r') as file:  
    print(file.tell())  # 打印当前文件指针位置  

技巧9:使用os.path.getsize()获取文件大小

os.path.getsize()返回文件的字节数。

import os  
file_size = os.path.getsize('example.txt')  
print(f"File size: {file_size} bytes")  

技巧10:使用shutil.copy()复制文件

shutil.copy()可以轻松复制文件。

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

技巧11:使用os.remove()删除文件

os.remove()用于删除指定的文件。

import os  
os.remove('temp.txt')  

技巧12:使用os.rename()重命名或移动文件

os.rename()不仅可以重命名文件,还可以将文件移动到不同的目录。

import os  
os.rename('oldname.txt', 'newname.txt')  

技巧13:使用os.listdir()列出目录下的文件

os.listdir()返回指定目录下的文件和子目录列表。

import os  
files = os.listdir('.')  
for file in files:  
    print(file)  

技巧14:使用csv模块读写CSV文件

csv模块提供了读写CSV文件的工具。

import csv  
with open('data.csv', 'w', newline='') as file:  
    writer = csv.writer(file)  
    writer.writerow(['Name', 'Age'])  
    writer.writerow(['Alice', 30])  

技巧15:使用json模块读写JSON文件

json模块可以轻松地将Python数据结构转换为JSON格式,反之亦然。

import json  
data = {'name': 'John', 'age': 30}  
with open('data.json', 'w') as file:  
    json.dump(data, file)  


继续深入:实战案例分析与技巧精进

实战案例1:批量修改文件名

假设你需要在一个目录下批量修改所有.txt文件的名称,将其后缀改为.bak

import os  
  
def rename_files(directory):  
    for filename in os.listdir(directory):  
        if filename.endswith('.txt'):  
            new_name = filename[:-4] + '.bak'  
            os.rename(os.path.join(directory, filename), os.path.join(directory, new_name))  
            print(f'Renamed "{filename}" to "{new_name}"')  
  
rename_files('.')  # 修改当前目录下的文件  

技巧提示:使用os.path.join()确保路径正确构造,无论操作系统是Windows还是Unix。

实战案例2:日志文件分析

假设你有一个日志文件,需要统计其中特定关键词的出现次数。

keyword = 'error'  
  
def count_keyword_occurrences(filename):  
    count = 0  
    with open(filename, 'r') as file:  
        for line in file:  
            count += line.count(keyword)  
    return count  
  
occurrences = count_keyword_occurrences('log.txt')  
print(f"The keyword '{keyword}' appears {occurrences} times.")  

技巧提示:使用str.count()方法快速计算关键词出现次数,注意区分大小写。

实战案例3:数据清洗与处理

处理从CSV文件读取的数据时,可能需要进行一些清洗和格式调整。

import csv  
  
def clean_data(input_file, output_file):  
    with open(input_file, 'r') as infile, open(output_file, 'w', newline='') as outfile:  
        reader = csv.reader(infile)  
        writer = csv.writer(outfile)  
        header = next(reader)  # 跳过标题行  
        writer.writerow(header)  # 写入标题行到新文件  
        for row in reader:  
            # 假设我们需要移除第二列的空格并转换为小写  
            row[1] = row[1].strip().lower()  
            writer.writerow(row)  
  
clean_data('raw_data.csv', 'cleaned_data.csv')  

技巧提示:使用next()函数跳过CSV文件的第一行(通常是标题行),确保数据处理的一致性和准确性。

注意事项与最佳实践

  • 文件权限:确保你有读写文件的权限,否则会遇到PermissionError

  • 异常处理:使用try-except语句处理文件操作中可能出现的异常,如文件不存在或损坏。

  • 编码问题:处理非ASCII文本时,确保使用正确的编码(如utf-8)打开文件。

  • 性能优化:对于大数据集,考虑使用生成器或迭代器,而不是一次性加载整个文件到内存中。

通过实践这些案例和技巧,你将能够更熟练地掌握Python中的文件读写操作,提升你的编程效率和项目处理能力。

文末福利

最后这里免费分享给大家一份Python全套学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

有编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习
⑤ 历年互联网企业Python面试真题,复习时非常方便
在这里插入图片描述
也可以扫描下方CSDNA官方认证二维码领取【保证100%免费
在这里插入图片描述

  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值