python文件读操作方法readlines(python读取文件readlines)

http://www.itjxue.com  2023-03-28 05:48  来源:未知  点击次数: 

Python文件读写

常见的读写操作:

Python内置了读写文件的函数,用法和C是兼容的。本节介绍内容大致有:文件的打开/关闭、文件对象、文件的读写等。仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题;

open()?? close()???? with open(...) as ...

看以下示例就能了解 Python?的 open()?及?close()?函数。这边调用 read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示,具体使用参见下文。

在 E 盘 python_file 文件夹下新建一 a.txt,输入随意,如下:

Python 操作 打开及关闭方式 如下:

注意 open() 之后 一定要 close()。但由于文件读写时都可能产生IOError,为了保证无论是否出错都能正确地关闭文件,我们用 try ... finally 来实现:

python 简化了改写法,即用 with open(...) as ...? ; 建议之后文件读写都用该写法:

上面,你肯定注意到了参数 "r";该参数决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

相关参数:

File 对象

file 为一对象,它有一些内置属性,如下

file对象的属性:

read()??? read(size)?? readline()?? readlines()

之前的例子已经接触到了 read() 函数,该函数会会一次性读取文件的全部内容,如果能确保文件的大小,自然可以。但若文件过大,内存就爆了,所以,可以反复调用read(size)方法,每次最多读取size个字节的内容;也可调用 readline() 每次读取一行内容;而调用readlines()可以一次读取所有内容并按行返回list。总之,根据需求来。仅以 txt 文件为例,其他的文件读取需要特殊处理;另外,文件的格式编码方式也需要注意;这边仅介绍读取方法,其他的会出专题来学习。

在D:\python_file 下新建 poet.txt;示例如下,由于一个中文会占多个字节,故read(size) 部分会乱码,如:

write()

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件;'a' 对应的表示追加等。

如下示例,由于 write.txt 文件不存在,创建该文件并写入:

在上例基础上,继续,该文件被重写:

继续,这次使用追加,会在文件结尾追加:

Python读取文件内容的方法有几种

python读取文本文件内容的方法主要有三种:read()、readline()、readlines()。

第一种:read()

read()是最简单的一种方法,一次性读取文件的所有内容放在一个大字符串中,即内存中。

read()的好处:方便、简单,一次性读出文件放在一个大字符串中,速度最快。

read()的坏处:文件过大的时候,占用内存会过大。

第二种:readline()

readline()逐行读取文本,结果是一个list。

readline()的好处:占用内存小,逐行读取。

readline()的坏处:逐行读取,速度比较慢。

第三种:readlines()

readlines()一次性读取文本的所有内容,结果是一个list。

readlines()的好处:一次性读取文本内容,速度比较快。

readlines()的坏处:随着文本的增大,占用内存会越来越多。

python读写文件

读文件

? ? 1)使用open()方法打开文件,返回一个文件对象

? ? ? ? 原型:open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

? ? ? ? 举例:f = open('test.txt', 'r')

? ? ? ? test.txt表示文件路径(包含文件名,这个file参数可以是绝对或者相对路径)

? ??????r表示是读文本文件,rb是读二进制文本文件。(这个mode参数默认值就是r)

????2)使用close()方法关闭文件

? ??????f.close()

? ? ? ? 打开后的文件必须关闭,因为文件对象会占用系统资源,系统打开文件数量也就有限了

? ??3)打开文件时的异常处理

? ??????f=open('test.txt', 'r')

? ? ? ? f.read()

? ? ? ? f.close()

????????FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

????????文件读写时都有可能产生异常IOError(比如文件不存在),这样其后面的f.read(),f.close()就不会调用。为保证无论是否异常都可以关闭文件,一般使用try ... finally来处理:

? ??????try:

? ? ????????f = open('test.txt', 'r')

? ? ? ? ? ? f.read()

????????finally:

? ? ????????if f:

? ? ? ? ????????f.close()

????????但这种写法过于繁琐,所以Python引入了with语句来自动调用close()方法:

????????with open('test.txt', 'r') as f:

????????????f.read()

? ? 4)读文件 - read()、readline() 和 readlines()

????????read() 一次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件过大,内存不够,可以通过反复调用read(size)方法,每次最多读取size个字节的内容。

????????readline() 一次读取文件中一行内容,可反复调用

????????readlines() 一次读取所有内容并按行返回列表,该列表可以由for ... in ... 结构再进一步处理。

? ? ? ? 特别注意:

????????这三种方法是把每行末尾的'\n'也读进来了,如有需要就得我们手动去掉'\n'

????????with open('test.txt', 'r') as f:

? ? ????????list = f.readlines()

????????for i in range(0, len(list)):

? ? ????????list[i] = list[i].rstrip('\n')

写文件

? ? 1)写文件和读文件是一样的,唯一区别是open文件时,传入标识符不同,即'w'或者'wb'表示写文本文件或写二进制文件

????f = open('test.txt', 'w')

????f = open('test.txt', 'wb')

????f = open('test.txt', 'a')

? ? f.close()

? ? 特别注意:

? ? 1. 如果没有这个文件,会自动创建一个新文件;如果有,就会先把原文件的内容清空再写入;若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式

? ? 2. 写文件,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。

? ??2)写文件 - write()、writelines()

? ??write()方法和read()、readline()方法对应,是将字符串写入到文件中。

????writelines()方法和readlines()方法对应,也是针对 列表 的操作。它接收一个 字符串列表 作为参数,将他们写入到文件中。

? ? 特别注意:

? ? 换行符不会自动的加入,需要显式的加入换行符。

? ??f = open('test.txt', 'w')

????f.writelines(["111\n", "222\n", "333\n"])

补充说明:

1)对于非默认编码(utf-8)的文件,需要open时添加encording参数,选择对应的编码方式

2)r+, w+, a+,可读可写

3)seek()方法,移动文件指针

seek(offset[, whence]) ,offset是相对于某个位置的偏移量。位置由whence决定,默认whence=0,从开头起;whence=1,从当前位置算起;whence=2相对于文件末尾移动,通常offset取负值。

python对文本文件的读有哪些方法,写有哪些方法?

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()

python读取txt时被修改

有少量数据存在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+:以二进制方式打开,可读、写文件。如果文件不存在,创建该文件;如果文件存在,会清空,在打开(覆盖)

(责任编辑:IT教学网)

更多

推荐综合特效文章