python文件内容操作--文本文件

目录

文本文件

1.open()内置函数--必须加close操作保存文件

(1)语法

(2)参数

(3)文件打开模式

(4)文件对象属性与常用方法

(5)举例

2.上下文管理语句with

(1)语法

(2)参数

(3)举例


文本文件

1.open()内置函数--必须加close操作保存文件

(1)语法

open(file, mode='r', buffering=-1, encoding=None, errors=None,newline=None, closefd=True, opener=None)

(2)参数

🧡file参数:指定了被打开的文件名称,为一个字符串。

💛mode参数:指定了文件打开模式,默认文件访问模式为"r"。

💚buffering参数:指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小,如取负值则表示缓存模式是默认值。

💙encoding参数:指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf-8、CP736等等。

(3)文件打开模式

模式说明
r读模式(默认模式,可省略),如果文件不存在,则抛出异常 。指针位置默认开头。
w写模式,如果文件已存在,先清空原有内容再进行编辑。如果不存在,则创建新文件。指针位置默认开头。
x写模式,创建新文件,如果文件已存在则抛出异常
a追加模式,不覆盖文件中原有内容 ,指针位置默认末尾。
b二进制模式(可与其他模式组合使用)
t文本模式(默认模式,可省略)
+读、写模式(可与其他模式组合使用)

(4)文件对象属性与常用方法

方法功能说明
close()把缓冲区的内容写入文件,同时关闭文件,并释放文件对象
flush()把缓冲区的内容写入文件,但不关闭文件
read([size])从文本文件中读取size个字符(Python 3.x)的内容作为结果返回,或从二进制文件中读取指定数量的字节并返回,如果省略size则表示读取所有内容 。注意指针的位置,即开始读取的位置。
readline()从文本文件中读取一行内容作为结果返回,返回的是一个字符串。
readlines()把文本文件中的每行文本作为一个字符串存入列表中,返回该列表。
seek(offset[, whence])把文件指针移动到新的字节位置,offset表示相对于whence的位置。whence为0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0。
tell()返回文件指针的当前位置。文件从头开始的当前位置为0,下一个位置为1,依次加1 。
write(s)把s的内容写入文件 ,注意写入的位置是从指针开始的位置写入。返回的是写入s的长度。
writelines(s)把字符串序列写入文本文件,不添加换行符,返回的是None 。

(5)举例

txt文本原来的内容(例1-6):

                       注意光标的位置

例1:

file=open(r"F:/资料/1.txt","r+",encoding="GBK")
file.seek(0)
file.write("ok")
print(file.read())
file.close()
​
file=open(r"F:/资料/1.txt","r+",encoding="GBK")
file.write("ok")
print(file.read())
file.close()

2种方式运行结果都为如下:

2323
545353535
3434
1324343434
2424
535553

2种方式的1.txt修改后的内容都为如下:

例2:

file=open(r"F:/资料/1.txt","r+",encoding="GBK")
print(file.read())
file.write("ok")
file.close()

运行结果:

132323
545353535
3434
1324343434
2424
535553

1.txt修改后的内容:

例3:

file=open(r"F:/资料/1.txt","r+",encoding="GBK")
file.seek(8)
file.write("ok")
print(file.read())
file.close()

运行结果(注意空格也算一个位置):

353535
3434
1324343434
2424
535553

1.txt修改后的内容:

例4:

file=open(r"F:/资料/1.txt","r+",encoding="GBK")
print(file.seek(8))
print(file.readlines())
print(file.tell())
file.close()

运行结果:

8
['545353535\n', '3434\n', '1324343434\n', '2424\n', '535553']
49

例5:

file=open(r"F:/资料/1.txt","r+",encoding="GBK")
print(file.read())
file.write("\nok")
file.close()

运行结果:

2323
545353535
3434
1324343434
2424
535553

1.txt修改后的内容:

例6:

file=open(r"F:/资料/1.txt","r+",encoding="GBK")
lst=["mjq"]
file.seek(2)
print(file.writelines(lst))
file.close()

运行结果:

None

1.txt修改后的内容:

txt文本原来的内容(例7):

           注意光标的位置

例7:

file=open(r"F:/资料/1.txt","r+",encoding="GBK")
print(file.read())
file.write("ok")
file.close()

运行结果:

132323
545353535
3434
1324343434
2424
535553

1.txt修改后的内容:

2.上下文管理语句with

(1)语法

with open(file, mode, encoding) as fp:

(2)参数

🧡file参数:指定了被打开的文件名称,为一个字符串。

💛mode参数:指定了文件打开模式,默认文件访问模式为"r"。

💚encoding参数:指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf-8、CP736等等。

(3)举例

例1:遍历并输出文本文件的所有行内容

with open(r"F:\资料\1.txt",'r') as file:
    for line in file:
        print(line)

运行结果:

132323
​
545353535
​
3434
​
1324343434
​
2424
​
535553

例2:假设文件data.txt中有若干整数,所有整数之间使用英文逗号分隔,编写程序读取所有整数,将其按升序排序后再写入文本文件data_asc.txt中

with open(r"F:\资料\2.txt",'r') as file:
    for data in file:
        data=data.split(",")
print(data)
data=[int(item) for item in data]
data.sort(reverse=True)
print(data)
data=[str(item)+'\n' for item in data]
with open(r"F:\资料\3.txt",'w')as file:
    file.writelines(data)

运行结果:

['12', '6', '3', '7', '65', '43', '35', '67', '8', '98', '8', '9', '5']
[98, 67, 65, 43, 35, 12, 9, 8, 8, 7, 6, 5, 3]

2.txt内容:

3.txt内容:

例3:统计文本文件中最长行的长度和该行的内容。

result=[0,'']
with open(r"F:\资料\1.txt",'r') as file:
    for line in file:
        print(line)
        t=len(line)
        print(t)
        if t>result[0]:
            result=[t,line]
print(result)

运行结果:

[11, '1324343434\n']

  • 24
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值