首页 > 编程语言 >Python基础入门 --- 8.文件

Python基础入门 --- 8.文件

时间:2024-03-25 13:33:52浏览次数:34  
标签:文件 UTF 入门 encoding Python --- close open 读取

文章目录

第八章:

8.文件

8.1 文件的编码

编码:一种规则集合,记录了内容和二进制之间进行相互转换的逻辑。

编码存在意义:计算机只认识0和1,需要将内容翻译成0和1才能保存在计算机中,同时也需要编码将在计算机中保存的0和1,翻译会我们可以识别的内容。

计算机中有很多可用编码:如UTF-8、GBK、Big5等。

UTF-8是全球通用的编码格式,除非有特殊需要,不然一律按UTF-8格式进行文件编码。

8.2 文件的读取

三个基本操作:

  • 打开文件

  • 读写文件

  • 关闭文件

8.2.1 open()打开函数

语法:文件对象 = open(name, mode, encoding)

name:要打开的目标文件名的字符串,可包含文件所在的具体路径

mode:设计打开文件的模式

encoding:编码格式

mode常用的三种基础访问模式:

模式说明
r以只读方式打开文件。文件指针会仿在文件的开头。默认模式
w以写入方式打开文件,如果文件已经存在,会从头开始编辑,原有的内容会被覆盖,如果文件不存在,会创建新文件
a以追加方式打开文件,如果文件已经存在,新的内容会被写入已有内容之后,如果文件不存在,会创建新文件进行写入。
f = open("test.txt", "r", encoding="UTF-8")
print(type(f)) # <class '_io.TextIOWrapper'>
8.2.2读取函数
read()

read()语法:文件对象.read(num)

num:从文件中读取的数据的长度,如果没传入num,会读取文件中所有的数据

f = open("test.txt", "r", encoding="UTF-8")
print(f"从文件中读取2个字节的数据结果为:{f.read(2)}")
print(f"从文件中读取所有的数据结果为:{f.read()}")r)
readlines()

readlines语法:文件对象.readlines()

按照行的方式将整个文件的内容进行一次性读取,返回的是一个列表,每一行数据为一个元素。

f = open("test.txt", "r", encoding="UTF-8")
lines = f.readlines()
print(f"lines的内容为:{lines}")
print(f"lines的类型为:{type(lines)}") # lines的类型为:<class 'list'>
readline()

readline()语法:文件对象.readline()

一次读取一行内容

f = open("test.txt", "r", encoding="UTF-8")
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行的内容为:{line1}")
print(f"第二行的内容为:{line2}")
print(f"第三行的内容为:{line3}")
for循环读取文件行

语法:for line in 文件对象

for line in open("test.txt","r", encoding="UTF-8"):
    print(line)
8.2.3 文件关闭函数
close()

语法:文件对象.close()

f = open("test.txt", "r", encoding="UTF-8")
f.close()

如果不调用close,同时程序并没有停止运行,该文件将一直被Python程序占用。

with open()

语法:with open(name, mode, encoding) as 文件对象

作用:在操作完成后自动关闭close文件。

with open("test.txt", "r", encoding="UTF-8") as f:
    for line in f:
        print(f"每一行数据是:{line}")
8.2.4 总结:
操作功能
文件对象 = open(name, mode, encoding)打开文件获取文件对象
文件对象.read(num)从文件中读取指定的数据长度,如果没传入num,会读取文件中所有的数据
文件对象.readline()读取一行
文件对象.readlines()读取全部行,得到列表
for line in 文件对象for循环文件行,一次循环得到一行数据
文件对象.close()关闭文件对象
with open() as f打开文件,在操作完成后自动关闭close文件。
8.3 文件的写入

write()语法:文件对象.write(“写入的内容”)

flush()语法:文件对象.flush()

直接调用write,内容并未真正写入文件中,会积攒在程序的缓冲区中,当调用flush时,内容才会真正写入文件中。close()内置了flush功能

f = open("test.txt", "w", encoding="UTF-8")
f.write("Hello Python!")
# f.flush()
f.close() # close内置了flush功能
8.4 文件的追加

通过a模式打开文件即可

  • a模式,文件不存在会创建新文件

  • a模式,文件存在的话,会在文化尾追加写入

f = open("test.txt", "a", encoding="UTF-8")
f.write("\nHello world")
f.close()
8.5 文件操作综合案例

文本文件内容如下:

name,date,money,level,type
小明,2002-10-04,5000,2,正式
小王,2005-08-05,3000,1,实习
小洪,2005-04-05,3500,1,实习
小李,2005-05-05,3500,1,实习
小黑,2003-05-07,5000,2,正式
小张,2004-03-10,4000,1,实习
小刘,2003-08-18,5000,2,正式
小美,2003-10-20,4500,2,正式

需求:将文件内标记为实习的数据行丢弃

fr = open("test.txt", "r", encoding="UTF-8")
fw = open("test.txt.bak", "w", encoding="UTF-8")
for line in fr:
    line = line.strip()
    if line.split(",")[4] == "实习":
        continue
    fw.write(line)
    fw.write("\n")
fr.close()
fw.close()
"\n")
fr.close()
fw.close()

标签:文件,UTF,入门,encoding,Python,---,close,open,读取
From: https://blog.csdn.net/zhongziqia/article/details/137011201

相关文章

  • Python基础练习 --- 从易到难(11-20)
    文章目录11.判断1-100偶数个数12.发工资13.ATM14.取出列表偶数15.分割字符串16.序列的切片17.升职加薪18.剪刀石头布19.打印直角三角形20.打印等腰三角形11.判断1-100偶数个数count=0forxinrange(1,101):ifx%2==0:count+=1print(f"1......
  • 深度学习 - PyTorch基本流程 (代码)
    直接上代码importtorchimportmatplotlib.pyplotaspltfromtorchimportnn#创建dataprint("****CreateData****")weight=0.3bias=0.9X=torch.arange(0,1,0.01).unsqueeze(dim=1)y=weight*X+biasprint(f"NumberofXsamples:{len......
  • ESP32与HC-SRO4的连接和通讯
    一、元件图片1、HC-SRO4:2、ESP32开发板二、元件连接三、程序代码#include<Arduino.h>constinttrigPin=4;constintechoPin=16;voidsetup(){Serial.begin(115200);delay(200);pinMode(trigPin,OUTPUT);pinMode(echoPin,INPUT);}voidl......
  • Python开源项目周排行 2024年第6周
    Python趋势周报,按周浏览往期GitHub,Gitee等最热门的Python开源项目,入选的项目主要参考GitHubTrending,部分参考了Gitee和其他。排名不分先后,都是当周相对热门的项目。入选公式=70%GitHubTrending+20%Gitee+10%其他关注微信公众号,接收周报推送#2024年第6周2024年3月16日......
  • 数据结构算法系列----对动态规划的感悟
    简介:   最近我一直在做和复习动态规划的题目,对动态规划有了一些新的理解和感悟。本文就是基于最近做的一些题目写的。一、动态规划的题目形式和选择   当题目是对于求某一串数字或者字符的最值时,一般就回想到三种解法,dfs暴搜、动态规划、贪心。在这三个之中显......
  • 深度学习(18)--注意力机制详解
    目录一.什么是注意力机制(AttentionMechanism)二.什么是注意力(Attention)三.自注意力机制(Self-AttentionMechanism)3.1.对输入数据进行Embedding操作3.2.q,k操作3.3.v操作 3.4.代码实现四.多头自注意力机制(Multi-headSelf-AttentionMachanism) 4.1.q,k操作4.2.v......
  • 我与我修身齐家治国平天下的人生理想-博客初篇
      这篇文章是我原个人独立博客的首篇文章,发表于2015-03-30。现转于此  每个人一辈子的高度都不尽相同,但相同的是每个人都有一个自己奋斗的过程;每个人都有一个自己的“修身齐家治国平天下”的人生理想。    《大学》有云: 古之欲明明德于天下者,先治其国;欲治其国......
  • YOLOv8-Seg改进:多创新点魔改设计 | 双层路由注意(BRA)+广义特征金字塔网络(GFPN)+多头检测
    ......
  • 视野修炼-技术周刊第78期 | Node.js纪录片
    欢迎来到第78期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • python实现时序平滑算法SG滤波器
    ......