python读取txt时被修改

Python010

python读取txt时被修改,第1张

有少量数据存在txt文件中,如何进行读取、写入和修改呢,今天小编就分享下:

python常用的读取文件函数有三种read()、readline()、readlines()

1、read() : 一次性读取所有文本

with open("1.txt", "r", encoding='utf-8') as f: #打开文本

data = f.read() #读取文本

print(data)

2、readline() : 读取行的内容

with open('1.txt', 'r', encoding='utf-8') as f:

data = f.readline()

print(data)

3、readlines():读取全部内容,以数列的格式返回结果,可以配合for循环使用。

with open('1.txt', 'r', encoding='utf-8') as f:

data = f.readlines()

print(data)

image.png

with open('1.txt', 'r', encoding='utf-8') as f:

for i in f.readlines():

i = ann.strip('\n') #去除文本中的换行符

print(i)

4、with open()写法与open()的区别

1666058828369926.png

image.png

open()完成后必须调用close()方法关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件

数量也是有限的,由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。with open()则可以避免这样的情况。

5、python文件读写模式

r : 读取文件,若文件不存在则会报错

w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件

a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾

r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖

w+ : 可读,可写,文件不存在先创建,会覆盖

a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾

rb:以二进制方式打开,只能读取文件。如果文件不存在,会发生异常

wb:以二进制方式打开,只能写入文件。如果文件不存在,创建该文件; 如果文件存在,会清空,在打开(覆盖)

rt:以文本读方式打开,只能读文件。不存在报错

wt:以文本写方式打开,只能写文件。 不存在创建;存在覆盖

rb+:以二进制方式打开,可读、写文件。如果文件不存在,会发生异常

wb+:以二进制方式打开,可读、写文件。如果文件不存在,创建该文件;如果文件存在,会清空,在打开(覆盖)

1 文件读取全文本操作

在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是read readline readlines,

read():读取文件的全部内容,加上参数可以指定读取的字符。

readline():读取文件的一行。

readlines():读取文件的所有行到内存中。

不同场景下我们可以选择不同函数对文件进行读取。

1.1 方法一

file_name = input("请输入你要打开的文件的完整路径及名称")

file= open(file_name, "r")

txt=file.read()

# 全文本的处理

file.close()

使用read函数将文件中的内容全部读取,放在字符串变量txt中。这样操作适合于文本较小,处理简单的情况,当文件较大时,这种方式处理时不合适的。一次性读取较大的文件到内存中,会耗费较多的时间和资源。这时候分批处理效果更好。

1.2 方法二

file_name = input("请输入你要打开的文件的完整路径及名称")

file= open(file_name, "r")

txt= file.read(4)

# 文本的处理while txt != ""txt= file.read(4)

# 批量文本处理

file.close()

这种方法适合于分批处理文本信息,每次批量读入,批量处理,不会对内存造成较大的压力。

1.3 方法三

file_name = input("请输入你要打开的文件的完整路径及名称")

file= open(file_name, "r")for line infile.readlines():

# 处理每一行数据

file.close()

这种处理方式适合处理以行为分割特点的文本,并且文本较小,因为这种处理方式需要一次性把文件所有内容读取到内存中。

1.4 方法四

file_name = input("请输入你要打开的文件的完整路径及名称")

file= open(file_name, "r") # 这里的file时文件句柄for line infile:

# 处理每一行数据

file.close()

这种方式和方法三中的区别是分行读入,逐行处理,不会一次性把文件所有内容都读入到内存中,对一些大文件的处理是很有效的。

2 文件写入文本操作

文件写入有两种写入函数和一种辅助支持。

write():向文件中写入一个字符或者字节流

writelines():将一个元素全为字符串的列表写入到文件中 需要注意的是,writelines写入列表元素的时候会把列表元素的内容拼接到一起写入,不会有换行和空格 。

seek(): 辅助写入函数offset偏移量参数代表含义如下

0 - 文件开头

1 - 当前位置

2 - 文件结尾

2.1 方法一

file_name = input("output.txt", "w+")

text= "hello world!"file_name.write(text)

file.close()

2.2 方法二

file_name = input("output.txt", "w+")

list= ["中午","早上","晚上"]

file_name.writelines(list)for line infile:

# 读取写入的数据,这时候发现是没有任何内容的

file.close()

我们增加一行代码就可以读取到写入的文件内容,利用seek()函数调整写操作指针的位置,可以实现写操作之后的正常读取。

file_name = input("output.txt", "w+")

list= ["中午","早上","晚上"]

file_name.readlines(list)

file_name.seek(0) # 调整写的指针到文件的开始位置for line infile:

# 读取写入的数据,这时候会读出一行写入的数据。

file.close()