破解文件处理难题:用 Python 处理 .txt 文件的必学方法

liftword1周前 (12-30)技术文章14

引言:

Python中,对.txt后缀的文件进行多种操作。以下是一些常见的操作及其示例代码:

先让我们来学习一下文件的打开模式及其作用:

读取整个文件:

path =r'D:\file.txt'                      #todo     txt文件所在的路径
with open(path, 'r') as file:
    content = file.read()
    print(content)

逐行读取:

path =r'D:\file.txt'                      #todo     txt文件所在的路径
with open(path, 'r') as file:
    lines = file.readlines()
    print(lines)                             #todo 打印的结果列表展示每一行内容

按行迭代读取:

path =r'D:\file.txt'                      #todo     txt文件所在的路径
with open(path, 'r') as file:
    for line in file:
        print(line, end='')   

with open(path, 'r') as file:
    for _ in range(6):                    # todo 读取指定的行,如前6行
        line = file.readline()
        print(line, end='')

覆盖写入(如果文件不存在则创建,如果文件存在则先清除文件内容并写入新的内容):

path =r'D:\file.txt'                      #todo     txt文件所在的路径
with open(path 'w') as file:
    file.write('Hello, World!\n')

追加写入:

path =r'D:\file.txt'                      #todo     txt文件所在的路径
with open(path, 'a') as file:
     file.write('你好呀\n')

删除指定行:在内存中处理数据

path = r'D:\file.txt'        #todo 替换为你的实际文件路径
line_to_remove = 3      #todo 要删除的行号(1-based)

try:
    with open(path, 'r') as file:
        lines = file.readlines()
    
    #todo  删除指定行(减去 1 因为 list 是 0-based 索引)
    if 1 <= line_to_remove <= len(lines):
        del lines[line_to_remove - 1]
    else:
        print(f"行号 {line_to_remove} 超出文件范围。")

    with open(path, 'w') as file:
        file.writelines(lines)

except FileNotFoundError:
    print(f"文件 {path} 不存在。")
except Exception as e:
    print(f"发生错误: {e}")

检查文件是否存在:

import os
path =r'D:\file.txt'                      #todo     txt文件所在的路径
if os.path.exists(path):
    print('File exists.')
else:
    print('File does not exist.')

删除文件:

import os
path =r'D:\file.txt'                      #todo     txt文件所在的路径
if os.path.exists(path):
    os.remove(path)
    print('File deleted.')
else:
    print('File does not exist.')

重命名文件:

import os
path =r'D:\file.txt'                      #todo     txt文件所在的路径
path_file= r'D:\new_file.txt'   
os.rename(path, path_file)

批量重命名文件:

import os
directory = r'D:\test'
for filename in os.listdir(directory):    #todo 将D:\test目录下所有以.txt结尾的文件,重新命名
    if filename.endswith('.txt'):
        new_name = filename.replace('.txt', '_old.txt')
        os.rename(os.path.join(directory, filename), os.path.join(directory, new_name))

获取文件大小:

import os
path =r'D:\file.txt'  
file_size = os.path.getsize(path)    #todo  获取文件大小
print(f'File size: {file_size} bytes')

读取和写入二进制文件:

path =r'D:\file.txt'  
with open(path, 'rb') as file:   #todo 读取二进制文件
    binary_data = file.read()

with open(path, 'wb') as file:  #todo 写入二进制数据
    file.write(binary_data)

文件锁定(进程间的互斥访问):

import fcntl
path =r'D:\file.txt'  
with open(path, 'r+') as file:
    fcntl.flock(file, fcntl.LOCK_EX)   #todo 锁定文件
    fcntl.flock(file, fcntl.LOCK_UN)  #todo 解锁文件

逐块读取大文件:

chunk_size = 1024  #todo  定义块大小
path =r'D:\large_file.txt'  
with open(path, 'r') as file:
    while chunk := file.read(chunk_size):
        process(chunk)  #todo  对每个块进行处理

处理文件编码:

path =r'D:\file.txt'  
#todo 以特定编码读取文件
with open(path, 'r', encoding='utf-8') as file:
    content = file.read()

#todo 以特定编码写入文件
with open(path, 'w', encoding='utf-8') as file:
    file.write('Some content')

文件内容比较:

import filecmp

result = filecmp.cmp('file1.txt', 'file2.txt')
if result:
    print("Files are identical")
else:
    print("Files are different")

图文说明如下:

相关文章

掌握这些Python后缀,让你的编程之路更加顺利

想象一下,你正在玩一个大型的多人在线游戏,你的任务是建造一个强大的城堡,保护自己免受敌人的攻击。你需要收集各种资源,比如木材、石头和金属,然后将它们组合在一起,建造出你的城堡。这就像是编程中的代码编写...

Python语言的12个基础知识点小结(python语言基础总结)

python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重、字典排序、字典、列表、字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进...

文件后缀,也称为文件扩展名,用于标识文件的类型

文件后缀,也称为文件扩展名,用于标识文件的类型,帮助操作系统确定使用何种程序来打开文件。这里列举一些常见的文件后缀名及其所代表的文件类型:? 文本文件:? .txt:纯文本文件? .doc、.docx...

「Python教程」第5篇 Python程序结构

Python程序的基本单元是文件,每个文件就是独立的一个最小的Python程序。用Python IDLE创建文件下面的动图显示了如何使用Python IDLE在Python安装目录下创建一个test....

一文搞懂Python中的import与目录层级

在Python开发中,合理地组织代码和正确地使用import语句是构建可维护、可扩展项目的关键。在具体介绍之前,我们先理解两个概念:包(package)和模块(module)模块(module) 可以...