首页 > 编程语言 >Python文件操作

Python文件操作

时间:2024-09-21 21:19:53浏览次数:10  
标签:文件 01 Python data 写入 2022 操作 open

文件的编码

  • 编码就是一种规则集合,记录了内容和二进制间进行相互转换的规则,编码有许多种,我们最常用的是UTF-8编码
  • 常见的编码方式
    • UTF-8:叫万国码-8bit是当前最流行的Unicode编码方式的字符集
    • GBK:GBK 向下与 GB 2312 编码兼容,主要用于中文扩展
  • 为什么需要使用编码:计算机只认识0和1,所以需要将内容翻译成0和1的形式才能保存在计算机中。

文件的操作

文件的定义

文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别

操作的步骤

  • 1-打开文件
  • 2-读写文件
  • 3-关闭文件

文件的打开

示例:

# 使用open()函数打开文件
# FileNotFoundError: [Errno 2] No such file or directory: 'python.txt'
# 读模式下文件必须已存在
"""
    name: 是要打开目标文件名的字符串(可以包含文件的具体路径)
    mode:设置打开文件的模式(访问模式):只读、写入、追加等
    encoding:设置编码格式,顺序不是第三位,所以不能位置参数,需要使用关键字参数
"""
f = open('python.txt', 'r', encoding='UTF-8')
print(f)
# 关闭文件
f.close()

总结:

  • 文件的打开:文件对象 = open(文件路径,文件打开模式,encoding = 文件编码)
  • 文件的关闭:文件对象.close()

文件的路径

示例:

# 绝对路径
# 定义文件路径
file_path = "D:\新建 文本文档.txt"
# 当路径中有特殊可以转义的字符时\就不会被作为文件路径分隔符,而作为转义字符,此时需要使用\\
file_path ="D:\\新建 文本文档.txt"
# 可以使用/来避免\作为转义字符
file_path = "D:/新建 文本文档.txt"

# 相对路径
# ./ 表示当前目录路径,打开文件时默认就是当前目录路径
# ../ 表示上级目录路径
file_path = "./python.txt"

# 可以原始字符串作为路径
file_path = r"D:\Python\01-序列的切片.py"

# 文件打开
f = open(file_path, 'r', encoding='UTF-8')
print(f)
# 关闭文件
f.close()

s1 = r"""
 \t
"""
print(s1)

总结:

  • 相对路径: ./代表当前目录(默认) …/回到上一级
  • 绝对路径: 从根目录开始的就是绝对路径 window根目录就是C盘,D盘 linux根目录就是/
  • 注意: 文件路径中的分隔符,建议使用\\或者/,不要直接用\

文件的读取

image-20240910143456553

  • read()方式读取文件内容
# 以r的模式打开文件,一般用于读取文本文件
# 1-打开文件
f = open('python.txt', mode='r', encoding='utf8')
# 2-操作文件
# 使用read(n)读取文件内容,如果传递n,固定读取n个字节,如果不传n默认读取全部内容
data = f.read()
# print(data)
data = f.read()
# print(data)
# 3-关闭文件
f.close()


# 以rb的模式打开文件,一般用于读取二进制文件(图像、音频、视频)
# 1-打开文件
# ValueError: binary mode doesn't take an encoding argument
# rb模式下不能有encoding参数
f = open('python.pdf', mode='rb')
# 2-操作文件
print(f.read())
# 3-关闭文件
f.close()
  • 按行读取文件内容
# 以r的模式打开文件,按行读取
# 方式一:一次读取一行
# 打开文件
f = open('python.txt', mode='r', encoding='utf8')
# 读取文件
data = f.readline()
print(data)
print(f.readline())
# 关闭文件
f.close()

# 方式二:一次读取所有行,并返回列表
# 打开文件
f = open('python.txt', mode='r', encoding='utf8')
# 读取文件
data = f.readlines()
# 遍历列表
for line in data:
    print(line, end='')
# 关闭文件
f.close()
  • with open()语法打开文件
# 使用with open()语法读取文件内容
with open('python.txt', mode='r', encoding='utf8') as f:
    # for line in f.readlines():
    #     print(line)
    lines = f.readlines()
    for line in lines:
        print(lines)

总结:

  • read(n):n表示要从文件中读取的数据的长度(单位是字节),如果没有传入n默认文件的全部内容
  • readlines():可以按照行的文件把整个文件内容一次性读取,并返回一个列表,其中每一行的数据作为列表中的一个元素
  • readline():一次读取一行内容,每次调用指针会自动向后移动
  • with open语法:可以操作完成后自动关闭文件调用close()方法

文件的写入

  • write()一个个写入
# 以w的模式打开文件,写入内容,一般用于文本数据写入文件
# 1-打开文件
f = open('word.txt', mode='w', encoding='utf8')
# 2-操作文件
# 使用write()函数写数据到文件,并返回写入文件的字节数量
data = f.write("你\n好\t世界")
print(data)
# 批量写入
f.flush()
# 3-关闭文件
f.close()

# 以wb模式打开文件,写入内容,一般用于二进制数据写入文件
# 打开文件
f = open('word.txt', mode='wb')
# 操作文件
data = "你好\n世界".encode('utf8')
print(data)
f.write(data)
# 关闭文件
f.close()
  • writelines()一行行写入
# writelines()按行写入
# 打开文件
f = open('word.txt', mode='w', encoding='utf8')
# 操作文件
f.writelines(['open:打开\n', 'close:关闭\n', 'read:读取\n', 'write:写入\n', 'append:追加\n', 'byte:字节\n', 'binary:二进制\n'])
# 关闭文件
f.close()
  • 文件追加写入
# 打开文件
f = open('word.txt', mode='a', encoding='utf8')
# 操作文件
f.write("hello world\n")
# 关闭文件
f.close()

总结:

  • 写入方法
    • f.write():一个个写
    • f.writelines():一行行写
  • f.flush()
    • 直接调用write()时,内容并没有真正写入文件,而是会暂存在内存中,称之缓冲区buffer
    • 当调用flush时,内容会真正地批量写入磁盘文件
    • 这样做是为了避免频繁操作磁盘
  • 使用w模式,文件如果不存在,会创建新文件,文件如果存在,会将原有内容清空再写入
  • 使用a模式,文件不存在会创建新,文件如果存在,不会清空内容会追加写入文件

文件的备份

数据:

name,date,money,type,remarks
周杰轮,2022-01-01,100000,消费,正式
周杰轮,2022-01-02,300000,收入,正式
周杰轮,2022-01-03,100000,消费,测试
林俊节,2022-01-01,300000,收入,正式
林俊节,2022-01-02,100000,消费,测试
林俊节,2022-01-03,100000,消费,正式
林俊节,2022-01-04,100000,消费,测试
林俊节,2022-01-05,500000,收入,正式
张学油,2022-01-01,100000,消费,正式
张学油,2022-01-02,500000,收入,正式
张学油,2022-01-03,900000,收入,测试
王力鸿,2022-01-01,500000,消费,正式
王力鸿,2022-01-02,300000,消费,测试
王力鸿,2022-01-03,950000,收入,正式
刘德滑,2022-01-01,300000,消费,测试
刘德滑,2022-01-02,100000,消费,正式
刘德滑,2022-01-03,300000,消费,正式

需求:

实现需求:
读取文件
将文件写出到bill.txt.bak文件作为备份
同时,将文件内标记为测试的数据行丢弃

实现思路:
open和r模式打开一个文件对象,并读取文件
open和w模式打开另一个文件对象,用于文件写出
for循环内容,判断是否是测试不是测试就write写出,是测试就continue跳过
将2个文件对象均close()

示例:

# 打开文件用于读取
f_read = open('D:\\python\\bill.txt', mode='r', encoding='utf8')
# 打开文件用于写入
f_write = open('D:\\python\\bill.txt.bak', mode='w', encoding='utf8')

# 操作文件
data = f_read.readlines()
# 定义新的列表用于保存丢弃包含测试数据行之后的列表
new_data = []
# print(data)
# 通过判断是否包含'测试',将不包含的数据行写入到新的列表
for line in data:
    if line.find('测试') == -1:
        new_data.append(line)
print(new_data)

# 将文件内标记为'测试'的数据行丢弃
f_write.writelines(new_data)

# 关闭文件
f_read.close()
f_write.close()

文件综合案例

数据:

name,date,money,type,remarks
周杰轮,2022-01-01,100000,消费,正式
周杰轮,2022-01-02,300000,收入,正式
周杰轮,2022-01-03,100000,消费,测试
林俊节,2022-01-01,300000,收入,正式
林俊节,2022-01-02,100000,消费,测试
林俊节,2022-01-03,100000,消费,正式
林俊节,2022-01-04,100000,消费,测试
林俊节,2022-01-05,500000,收入,正式
张学油,2022-01-01,100000,消费,正式
张学油,2022-01-02,500000,收入,正式
张学油,2022-01-03,900000,收入,测试
王力鸿,2022-01-01,500000,消费,正式
王力鸿,2022-01-02,300000,消费,测试
王力鸿,2022-01-03,950000,收入,正式
刘德滑,2022-01-01,300000,消费,测试
刘德滑,2022-01-02,100000,消费,正式
刘德滑,2022-01-03,300000,消费,正式

需求:

统计每个人的消费总金额,并将结果写入到文件

示例:

# 打开文件用于读取
f_read = open('D:\\python\\bill.txt', mode='r',
              encoding='utf8')
# 统计每个人的消费总金额,并将结果写入到文件
# 定义字典用于保存每个人的消费总金额
consume_dict = {
    "周杰轮": 0,
    "林俊节": 0,
    "张学油": 0,
    "王力鸿": 0,
    "刘德滑": 0
}
# 操作文件处理数据
lines = f_read.readlines()
# 遍历列表,按行处理数据
for line in lines:
    if line.find('消费') != -1:
        consume_list = line.split(',')
        print(consume_list[0], consume_list[2], type(consume_list[2]))
        # 以人名作为key,以消费金额作为value进行计算
        # consume_list[0]就是当前行的人名
        # consume_list[2]就是当前行的消费金额
        consume_dict[consume_list[0]] += int(consume_list[2])
print(consume_dict)
# 将计算结果写入到结果文件中
# 打开文件用于写入
f_write = open('D:\\python\\result.txt', mode='w', encoding='utf8')
# 操作文件
f_write.write(consume_dict.__str__())

# 关闭文件
f_write.close()
f_read.close()

标签:文件,01,Python,data,写入,2022,操作,open
From: https://blog.csdn.net/JY_030212/article/details/142424578

相关文章

  • python基频曲线
    在Python中,可以使用matplotlib库来绘制基频曲线(即音乐的音调曲线)。以下是一个简单的例子,演示如何绘制一个简单的正弦波基频曲线:importnumpyasnpimportmatplotlib.pyplotasplt#参数A=1.0#振幅f=440.0#频率(Hz),人耳听力的基准频率......
  • Python——列表与函数的关系
    目录1.问题描述2.与Python其他序列类型比较3.与C语言比较4.结论1.问题描述Python中为方便对列表进行修改,规定列表传入函数后进行的修改是直接针对原列表所在地址的,即在函数中对传入的列表的修改是全局的、永久的。示例代码如下:deffun(list):list[0][0]=18lis......
  • 24/9/21 python的推导式、生成器
    python推导式和生成器介绍1.列表推导式(ListComprehension)列表推导式是最常见的一种推导式,它允许你用一行代码生成列表,形式如下:new_list=[expressionforiteminiterableifcondition]expression:要添加到新列表的值,可以是简单的变量,也可以是运算结果。item:来自迭代......
  • 要优化WiFi 7无线网卡的性能,可以通过调整注册表来实现。下面是一些常见的优化设置,可以
    要优化WiFi7无线网卡的性能,可以通过调整注册表来实现。下面是一些常见的优化设置,可以将其保存为.reg文件:CopyCodeWindowsRegistryEditorVersion5.00;优化WiFi7无线网卡设置[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]"TcpAckFreque......
  • D13【python接口自动化学习】-python基础之内置数据类型
    day13集合学习日期:20240920学习目标:内置数据类型--22常见常新:集合的常见操作学习笔记:集合与set对象创建set对象set对象的常用操作#使用set对象对元组去重color=('r','g','b','g','b','b')#创建元组new_color=set(color)#转换set对象去重print(new_color)#......
  • D14【python接口自动化学习】-python基础之内置数据类型
    day14字典的定义学习日期:20240921学习目标:内置数据类型--23字典:如何处理映射类型的数据?学习笔记:映射与字典字典的定义字典的删除总结字典用于存储键值对,键值对之间有关联字典键要求可哈希,一般采用字符串,元组做字典的键值可以使用dic()函数、推导式和花括号{}三......
  • Python基于TensorFlow实现时间序列循环神经网络回归模型(LSTM时间序列回归算法)项目实
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景随着信息技术的发展和传感器设备的广泛应用,时间序列数据的产生量急剧增加。无论是股市价格的波动、电力消耗的趋势还是环境监测的数据变化,准确地预......
  • 20240921全国计算机二级Python考试(大头博士计算二级)
    一、背景需求:20240921我在上海应用技术大学44号楼考场参加2024年9月的全国计算机二级(Python语言程序设计)考试。时隔多年,再次来到大学校园,恍若隔世扫码找考场在哪里考场须知1、进考场,先刷身份证刷脸核对2、进入机房前,上厕所,手机关闭闹钟后关机,放到包里,身上有蓝......
  • 基于python+flask框架的基于微信小程序的小区疫情防控(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全球疫情的持续影响,社区作为疫情防控的第一线,其管理效率与响应速度直接关系到居民的健康安全。传统的小区管理方式在面对疫情时显得力......
  • 基于python+flask框架的基于微信小程序的闲置物品交易系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,尤其是移动互联网的普及,人们的生活方式发生了深刻的变化。在校园环境中,学生群体拥有大量的闲置物品,如书籍、电子......