当前位置: 首页 > news >正文

【Python】Python文件操作

Python文件操作

文章目录

      • Python文件操作
    • @[toc]
        • 1.文件的编码
        • 2.文件打开、读取(r模式)、关闭
        • 3.文件的写入(w模式)
        • 4.文件的追加写入(a模式)
        • 5.综合案例

1.文件的编码
  • 意义:计算机只能识别0和1,计算机使用编码技术将丰富文本文件的内容翻译成0和1存入,同时也需要编码将计算机保存的0和1反向翻译回可以识别的内容。计算机有许多可用编码,例如UTF-8、GBK、Big5等。不同的编码,将内容翻译成二进制也是不同的。UTF-8是目前全球通用的编码格式。

2.文件打开、读取(r模式)、关闭
  • 打开文件:open(name,mode,encoding),name是要打开的目标文件名的字符串(文件的具体路径),mode是设置打开文件的模式(访问文件的模式):只读、写入、追加等,encoding是编码格式(推荐使用UTF-8)。使用该函数,可以打开一个已经存在的文件或者创建一个新文件。

    几种访问文件的模式:

模式描述
r以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式
w以写入的模式打开文件,如果该文件已经存在则打开该文件,并从头开始编辑,原有内容会被删除,如果该文件原先不存在,则创建新文件。
a打开一个文件用于追加。如果该文件存在,新的内容将会被写到已有内容之后,如果该文件不存在,创建新文件进行写入。
  • 文件的打开、读取、关闭操作
操作功能
文件对象 = open (file, mode, encoding)打开文件获得文件对象
文件对象.read (num)读取指定长度字节,不指定 num 读取文件全部
文件对象.readline ()读取一行,多写几个就是依次读取
文件对象.readlines ()读取全部行,封装得到列表
for line in 文件对象for 循环文件行,一次循环得到一行数据
文件对象.close ()关闭文件对象
with open() as f通过 with open 语法打开文件,自动创建文件对象,并可以自动关闭文件
# 每个example.txt文件都是
'''
1234567
abcdefg
8910
hijk
'''# 打开文件,open("文件路径", "读取方式", encoding="编码类型")
f = open("D:/pythonlearning/example.txt", "r", encoding="UTF-8")
print(type(f))
print(20 * "*")# 读取文件,文件对象.read(num),读取文件的前num个字节,若没有传入num,则读取全部
print(f.read(10))
print(f.read())   # 接着上面的f.read(10)读
print(20 * "*")# 读取文件,文件对象.readlines(),读取文件每一行,封装为列表
print(f.readlines())     # 同样也是接着上面继续读,所以输出结果是个空列表
k = open("D:/pythonlearning/example1.txt", "r", encoding="UTF-8")
print(k.readlines())     # 读取一个全新的文件,把每一行分割,封装为列表
print(20 * "*")# 读取文件,文件对象.readline(),使用一次读取一行
g = open("D:/pythonlearning/example2.txt", "r", encoding="UTF-8")
line1 =g.readline()
line2 =g.readline()
line3 =g.readline()
print(line1)
print(line2)
print(line3)
print(20 * "*")# 用for循环读取文件行
m = open("D:/pythonlearning/example3.txt", "r", encoding="UTF-8")
for line in m:print(line)
print(20 * "*")# 关闭文件,文件对象.close()。关闭程序对文件的占用# with open语法:with open("文件路径", "读取方式", encoding="编码类型") as 文件对象:,可以自动创建文件对象以及自动关闭文件
with open("D:/pythonlearning/example4.txt", "r", encoding="UTF-8") as n:for line in n:print(line)# 输出结果
'''
<class '_io.TextIOWrapper'>
********************
1234567
ab
cdefg
8910
hijk
********************
[]
['1234567\n', 'abcdefg\n', '8910\n', 'hijk']
********************
1234567abcdefg8910********************
1234567abcdefg8910hijk
********************
1234567abcdefg8910hijk
'''

练习

exercise.txt文件如下,要求统计hello这个单词出现的次数

hello hi hello good
if while hello yes hello hello
yes good hello
hello
hello

f = open("D:/pythonlearning/exercise.txt", "r", encoding="UTF-8")
k = 0
for line in f:my_str = line.strip("\n")   # 删除首尾可能出现的换行符my_str = my_str.strip(" ")  # 删除首尾可能出现的换行符new_list = my_str.split(" ")  # 分隔,成为列表k += new_list.count("hello")
print(k)
f.close()# 输出结果
'''
8
'''

3.文件的写入(w模式)
  • 写入内容:文件对象.write(写入的内容)
  • 文件内容刷新:文件对象.flush()直接调用write,内容并没有真正写入文件,而是会积攒在程序的内存中,称之为缓存区,这时候需要调用flush,内容才会真正写入文件。这么做是为了避免频繁操作硬盘,导致效率下降(攒一起,一次性写入)
# 创建一个新的文件,并进行写入操作
f = open("D:/pythonlearning/1.txt", "w", encoding="UTF-8")  # 写入模式“w”
f.write("hello world")
f.flush()  # 刷新内容
f.close()  # close函数有内置flush刷新功能,关闭的同时也对文档进行了更新# 打开一个已经存在的文件,并进行写入操作
g = open("D:/pythonlearning/example.txt", "w", encoding="UTF-8")  # 写入模式“w”,会把已有文件全部清空
g.write("hello world")
f.close()# example文件结果
'''
hello world
'''

4.文件的追加写入(a模式)
# 创建一个新的文件,并进行追加写入操作
f = open("D:/pythonlearning/2.txt", "a", encoding="UTF-8")  # 追加写入模式“a”
f.write("hello world")
f.flush()  # 刷新内容
f.close()  # close函数有内置flush刷新功能,关闭的同时也对文档进行了更新# 打开一个已经存在的文件,并进行写入操作
g = open("D:/pythonlearning/example1.txt", "a", encoding="UTF-8")  # 追加写入模式“a”,在已有内容后面继续加内容
g.write("\nhello world")
f.close()# example1文件结果
'''
1234567
abcdefg
8910
hijk
hello world
'''

5.综合案例

exercise1.txt文件如下:

name,date,money,type,remarks
周伦,2022-01-01100000,消费,正式
周伦,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, 消费,正式

完成以下操作:

(1)读取文件

(2)将文件写出到new.txt文件

(3)同时,将文件内标记为测试的数据行丢弃

f = open("D:/pythonlearning/exercise1.txt", "r", encoding="UTF-8")
g = open("D:/pythonlearning/new.txt", "a", encoding="UTF-8")
for line in f:str1 = line.strip(" ")str_last = str1.strip("\n")new_list = str_last.split(",")if "正式" in new_list:g.write(str_last + "\n")
f.close()
g.close()# 输出结果
'''
周伦,2022-01-01100000,消费,正式
周伦,2022-01-02,300000,收入,正式
林节,2022-01-01,300000, 收入,正式
林节,2022-01-03,100000, 消费,正式
林节,2022-01-05,500000, 收入,正式
张油,2022-01-01,100000, 消费,正式
张油,2022-01-02,500000, 收入,正式
王鸿,2022-01-01,500000, 消费,正式
王鸿,2022-01-03,950000, 收入,正式
刘滑,2022-01-02,100000, 消费,正式
刘滑,2022-01-03,300000, 消费,正式
'''
2-01-01,300000, 收入,正式
林节,2022-01-03,100000, 消费,正式
林节,2022-01-05,500000, 收入,正式
张油,2022-01-01,100000, 消费,正式
张油,2022-01-02,500000, 收入,正式
王鸿,2022-01-01,500000, 消费,正式
王鸿,2022-01-03,950000, 收入,正式
刘滑,2022-01-02,100000, 消费,正式
刘滑,2022-01-03,300000, 消费,正式
'''

文章转载自:

http://mQbUDW7j.ydfLc.cn
http://CvgEg3fR.ydfLc.cn
http://Co4qMDo8.ydfLc.cn
http://hDmAoIYs.ydfLc.cn
http://haGZk9k8.ydfLc.cn
http://JYlMquN4.ydfLc.cn
http://itS4kYLh.ydfLc.cn
http://N07yNICx.ydfLc.cn
http://wMFsWCxu.ydfLc.cn
http://5yy8k7yZ.ydfLc.cn
http://dTTrphuK.ydfLc.cn
http://KqcQtM9z.ydfLc.cn
http://lzjhwTyY.ydfLc.cn
http://ikOhULKR.ydfLc.cn
http://pKhjaYT1.ydfLc.cn
http://pWSvJ9FZ.ydfLc.cn
http://zRsMHbPK.ydfLc.cn
http://BkUJjDep.ydfLc.cn
http://LBQ93PlO.ydfLc.cn
http://RgRadtlv.ydfLc.cn
http://gkF7yByv.ydfLc.cn
http://rS0otakb.ydfLc.cn
http://IOQvudwQ.ydfLc.cn
http://s3SPRVfF.ydfLc.cn
http://aETUbjeO.ydfLc.cn
http://SGINTaqw.ydfLc.cn
http://0F7m02oJ.ydfLc.cn
http://3RAtybC9.ydfLc.cn
http://IKY3PIZa.ydfLc.cn
http://D8Nodr6Y.ydfLc.cn
http://www.dtcms.com/a/388504.html

相关文章:

  • C#如何使用ApiPost接口,将数据显示在unity面板
  • 零基础从头教学Linux(Day 36)
  • 深度学习(2)
  • 火山 17 声音回调
  • Flash芯片的VCC上电到可操作时间过长
  • CSP-S——各算法可以实现的问题
  • 第十七章 Arm C1-Premium性能监控单元(PMU)事件详解
  • vue锚点导航
  • 软件体系结构——后端三层架构
  • Nmap 端口扫描
  • 关于青春的沉浸式回忆录-《学生时代》评测
  • 深入理解虚拟 DOM(VDOM):原理、优势与应用
  • React 18笔记
  • 模块化演进史:从 IIFE / CommonJS / AMD 到 ES Modules(含 Tree Shaking 原理)
  • Python+PyQt构建自动化定时任务执行工具
  • 前端如何终止请求
  • Ubuntu 系统 MySQL 全面管理指南(认证、用户、密码、服务及安全)
  • 《UE5_C++多人TPS完整教程》学习笔记53 ——《P54 转身(Turning in Place)》
  • 【Cyansdk 插件详细介绍文档】
  • IDEA 如何打开eclipse项目
  • linux C++ opencv 绘制中文(源码编译opencv)
  • 线性回归到 Softmax 回归
  • Python实现剑龙优化算法 (Stegosaurus Optimization Algorithm, SOA)优化函数(付完整代码)
  • 微软开始在Win11上全屏打广告了,怎么关?
  • 深度学习-线性回归与 Softmax 回归
  • OpenCV:背景建模
  • JavaScript async/await 实战秘籍 异步编程技巧 + 避坑指南 秒杀 Promise then 链
  • Next.js动态配置实时预览方案
  • 讲讲对MoE的理解
  • OpenLayers数据源集成 -- 章节十七:KML图层详解:Google Earth数据格式的完整集成与交互式展示方案