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://www.pswp.cn/bicheng/98228.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/98228.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/98228.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CES Asia的“五年计划”:打造与北美展比肩的科技影响力

在全球科技产业版图中&#xff0c;展会一直是前沿技术展示、行业趋势探讨以及商业合作达成的关键平台。CES Asia&#xff08;亚洲消费电子技术展&#xff09;作为亚洲科技领域的重要展会&#xff0c;近日明确提出其“五年计划”&#xff0c;目标是打造与北美展会比肩的科技影响…

【计算机网络 | 第16篇】DNS域名工作原理

文章目录3.5 域名系统工作原理主机的标识方式&#xff1a;域名 vs IP 地址标识转换机制&#xff1a;DNS系统因特网的域名系统&#xff1a;层次域名空间&#x1f426;‍&#x1f525;顶级域名分类低级域名与管理域名与IP的区别因特网的域名系统&#xff1a;域名服务器&#x1f9…

YASKAWA安川机器人铝材焊接节气之道

在铝材焊接领域&#xff0c;保护气体的合理使用对焊接质量与成本控制至关重要。安川焊接机器人凭借高精度与稳定性成为行业常用设备&#xff0c;而WGFACS节气装置的应用&#xff0c;则为其在铝材焊接过程中实现高效节气提供了创新路径。掌握二者结合的节气之道&#xff0c;对提…

GooseDB,一款实现服务器客户端模式的DuckDB

在网上看到韩国公司开发的一款GooseDB&#xff0c; 官方网站对它的介绍是DuckDB™ 的功能扩展分支&#xff0c;具有服务器/客户端、多会话和并发写入支持&#xff0c;使用 PostgreSQL 有线协议&#xff08;DuckDB™是 DuckDB 基金会的商标&#xff09; 使用也很简单&#xff…

lesson62:JavaScript对象进化:ES2025新特性深度解析与实战指南

目录 一、迭代器辅助方法&#xff1a;对象数据处理的优雅革命 1.1 核心方法与语法 1.2 对象属性处理实战 1.3 性能与兼容性考量 二、JSON模块原生支持&#xff1a;对象加载的范式转变 2.1 静态与动态导入语法 2.2 与传统方案的对比优势 2.3 典型应用场景 三、Set集合增…

设计模式学习笔记(一)

设计模式学习笔记&#xff08;一&#xff09; 一般说设计模式都是指面向对象的设计模式&#xff0c;因为面向对象语言可以借助封装、继承、多态等特性更好的达到复用性、可拓展性、可维护性。 面向对象一般指以类、对象为组织代码的基本单元&#xff0c;并将封装、继承、多态、…

【CSS】一个自适应大小的父元素,如何让子元素的宽高比一直是2:1

父元素是自适应大小的容器&#xff08;比如 width:100%&#xff09;&#xff0c;我们希望子元素 始终保持 2:1 宽高比&#xff08;比如宽 200px → 高 100px&#xff0c;宽 300px → 高 150px&#xff09;。 有几种常见解法&#xff1a;✅ 方法一&#xff1a;CSS aspect-ratio&…

如何搭建redis集群(docker方式非哨兵)

1、redis的配置文件这里要注意&#xff0c;主从的ip不需要我们去设置&#xff0c;只需要设置主从的密码就可以&#xff0c;然后就是protect-mode&#xff0c;我设置的是no&#xff0c;一定注意不能设置主从。客户端要访问&#xff0c;一定要加# 每个节点的 redis.conf 中 clust…

如何学习VBA_3.3.9:利用“搭积木”思想,快速有效地完成你的代码

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的劳动效率&#xff0c;而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册&#xff0c;现在已经全部完成&#xff0c;希望大家利用、学习。如果您…

JSP程序设计之输入/输出对象 — response对象

response对象1.概述2.实例&#xff1a;response对象方法运用&#xff08;1&#xff09;实例一&#xff1a;页面自动刷新&#xff08;2&#xff09;实例二&#xff1a;实现页面重定向&#xff0c;具体的代码&#xff08;3&#xff09;综合实例&#xff1a;实现登录并记录用户名1…

Redis 事件驱动框架(ae.c_ae.h)深度解析

Redis 事件驱动框架&#xff08;ae.c/ae.h&#xff09;深度解析 之前咱们用 “超市收银员” 的例子&#xff0c;简单看懂了 ae 模块是 Redis 的 “多任务神器”。现在咱们再往深走一层&#xff0c;不用复杂代码&#xff0c;只拆它的 “核心运作逻辑”—— 搞懂它怎么做到 “一个…

[能源化工] 面向锂电池RUL预测的开源项目全景速览

锂离子电池是新能源汽车、储能系统及便携式电子设备的核心能源部件&#xff0c;其剩余使用寿命&#xff08;Remaining Useful Life&#xff0c;RUL&#xff09;的准确预测直接关系到设备运行安全、维护成本优化和能源效率提升。RUL预测算法能够提前量化电池剩余可用时间&#x…

PEFT QLora Deepspeed Zero Stage 3 Offload Trainning

使用 accelerate deepspeed zero stage 3 offload 进行 sft trainning 的自动设备映射: GPU 训练计算 CPU 存储 run_peft_qlora_deepspeed_stage3.sh #!/bin/bashexport MAX_JOBS4 export OMP_NUM_THREADS4 export disable_exllamaTrue export CUDA_VISIBLE_DEVICES0,1 expor…

JAVA上门家政维修服务系统源码微信小程序+微信公众号+APP+H5

一、功能介绍用户端&#xff1a;精准分类、支持家政、维修、万能服务、一口价、报价、线上、各类家政服务、优惠专区、师傅入驻、商家入驻、我的需求、补费明细、我的投诉&#xff1b;师傅端&#xff1a;接单池、消息通知、接单管理、今日订单、师傅入驻、我的钱包、实名认证&a…

GCKontrol对嵌入式设备FPGA设计流程的高效优化

1 前言FPGA&#xff08;Field-Programmable Gate Array&#xff0c;现场可编程逻辑门阵列&#xff09;是一种可编程的半导体器件&#xff0c;因其硬件可重构性、硬件并行计算能力、低延迟和实时性的优势&#xff0c;广泛应用于数字电路设计、原型验证和系统加速等领域。但开发…

DBAPI免费版对比apiSQL免费版

DBAPI简介 零代码开发api服务&#xff0c;只需编写sql&#xff0c;就可以生成http api服务。支持api动态创建&#xff0c;兼容多种数据库。 适用于BI报表、数据可视化大屏的后端接口快速开发。 旨在为企业数据服务的发布提供完整解决方案 一、DBAPI免费版本支持1个数据源连接支…

CTFHub SSRF通关笔记8:数字IP Bypass 原理详解与渗透实战

目录 一、SSRF 二、数字IP原理 1、IP多进制 &#xff08;1&#xff09;十进制整数格式 (Dword / 长整数格式) &#xff08;2&#xff09;八进制格式 (Octal IP) &#xff08;3&#xff09;十六进制格式 (Hex IP) 2、SSRF绕过 三、渗透实战 1、打开靶场 2、尝试127.0.…

C++中双引号和单引号的区别(全面分析)

我在刷算法题的时候经常遇到&#xff0c;用了 出现警告或者使用" "直接报错&#xff0c;尤其是在字符串部分&#xff08;py玩家后遗症/(ㄒoㄒ)/~~&#xff09;在详细了解后总结一下加强记忆。 总的来说在 C 中&#xff0c;双引号 "" 和单引号 是完全不同…

Ubuntu20.04仿真 |iris四旋翼添加云台相机详述

申明&#xff1a; 1、本人使用的是Ubuntu20.04ros1gazeboxtdronepx4的仿真组合 2、为了使传感器模型和飞机模型解耦合&#xff0c;实现不同平台对传感器可直接调用&#xff0c;本系列博文涉及的所有传感器均不直接添加在相应平台的sdf当中&#xff0c;而是通过编写xxx_joint.…

《人工智能AI之机器学习基石》系列 第 16 篇:关联规则与数据挖掘——“啤酒与尿布”传奇背后的增长秘密

《人工智能AI之机器学习基石》⑯ 专栏核心理念: 用通俗语言讲清楚机器学习的核心原理,强调“洞察+ 技术理解 + 应用连接”,构建一个完整的、富有启发性的知识体系。 引言:藏在购物车里的“读心术” 朋友们,欢迎回到我们的AI基石之旅。 在过去的两次探索中,我们深入…