pythonread
⑴ python中read,readline和readlines三者间的区别和用法
这篇文章主要给大家介绍了关于Python中读取文件的read()、readline()和readlines()方法三者间的区别和用法,需要的朋友可以参考下
前言
众所周知在python中读取文件常用的三种方法:read(),readline(),readlines(),今天看项目是又忘记他们的区别了。以前看书的时候觉得这东西很简单,一眼扫过,待到用时却也只知道有这么几个方法,不懂得它的原理与用法。也许吧,没有永远的记忆,况且根本没有用心去记它。话不多说,来一起看看详细的介绍:
准备
假设a.txt的内容如下所示:
Hello
Welcome
What is the fuck...
一、read([size])方法
read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象
f = open("a.txt")
lines = f.read()
print lines
print(type(lines))
f.close()
输出结果:
Hello
Welcome
What is the fuck...
<type 'str'> #字符串类型
二、readline()方法
从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。
f = open("a.txt")
line = f.readline()
print(type(line))
while line:
print line,
line = f.readline()
f.close()
输出结果:
<type 'str'>
Hello
Welcome
What is the fuck...
三、readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。
f = open("a.txt")
lines = f.readlines()
print(type(lines))
for line in lines:
print line,
f.close()
输出结果:
<type 'list'>
Hello
Welcome
What is the fuck...
四、linecache模块
当然,有特殊需求还可以用linecache模块,比如你要输出某个文件的第n行:
# 输出第2行
text = linecache.getline(‘a.txt',2)
print text,
对于大文件效率还可以。
⑵ python中read,readline和readlines的区别
read 读取整个文件
readline 读取下一行
readlines 读取整个文件到一个迭代器以供遍历(读取到一个list中,以供使用,比较方便)
⑶ python中readline()怎么用,还有readline和readlines,read的区别和用法
python中readline()是用来读取文本文件中的一行。
readline和readlines,read都是用来读取文件内容,readline()每次读取一行,当前位置移到下一行;readlines()读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素;read(size)从文件当前位置起读取size个字节(如果文件结束,就读取到文件结束为止),如果size是负值或省略,读取到文件结束为止,返回结果是一个字符串。
f=open("myfile")
while True:
line=f.readline()
if line:
print line,
else:
break
f=open("myfile")
lines=f.readline() #lines是一个列表变量
f=open("myfile")
lines=f.read() #lines是一个字符串变量
⑷ python文件的创建、写入、读取
最近在构思如何 本地化股票数据 ,觉得有必要复习一下python对文件的创建、写入、和读取。
首先先了解一下对于文件的处理都有常用函数:
open(path, mode):生成文件对象。
参数说明:path文件路径、mode文件的操作模式
文件的操作模式说明
1、写入模式:‘w’创建、‘wb’创建二进制、‘a’追加内容、‘ab’二进制形式追加内容(另外如在后面添加‘+’号,附加读取功能如:‘w+’)
可用write()、writelines()写入内容、close()保存文件
注意:windows系统在输入写入中文时,输入参数 encoding=‘utf-8’
可用read()函数对文件内容进行读取
注意:读取的内容是从结尾开始的,用seek(0)函数指定读取位置为开头
这里我用‘w+’模式来举例
2、读取模式:‘r’读取内容、‘rb’读取二进制内容(区别于写入模式的读取,读取模式从开头开始读取)
除了read()、还有readline()调用一次返回一行数据、readlines()返回每行数据list
另外还有mode属性:看查文件对象的模式、closed属性:判断文件是否关闭、name属性:返回文件名
这里我还要介绍一个关键字with,他是一个表达式能为调用的文件对象别名,且自动关闭文件。
⑸ python中read() ,readline()以及readlines()区别
该篇文章主要是记录python中操作文件的三个函数read(),readline()以及readlines()之间的扰或弊区别。
首先先给出结论:
1.read() 每次读取整个文件,它通常将读取到底文件内容放到一个字符串变量中,也就是说 .read() 生成文件内容是一个字符串类型。
2.readline()每团散只读取文件的一行,通常也是读取到的一行内容放到一个字符串变量中,返回str类型。
3.readlines()每次按行读取整个文件内容,将读取到的内容放到缓族一个列表中,返回list类型。
我的文件内容如下:
编写程序如下:
得出结果如下:
编写程序如下:
得出输出结果如下:
编写程序如下:
得到输出结果如下:
⑹ 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读取文件内容的方法有几种
filename=open('i:\\install\\test.txt','r+')#读取xx路径xx文件;r+代表的是读写并存方式 print filename.read()#读取所有的文件
⑻ python中isread函数么
文件对象(open() 函数的返回值)提供了read()函数可以按字节或字符读取文件内容,到底是读取字节还是字符,取决于使用 open() 函数打开文件时,是否使用了 b 模式,如果使用了 b 模式,则每次读取一个字节;反之,则每次读取一个字符。
read() 函数的基本语法格式如下:
file.read([size])
其中,file 表示打开的文件对象;size 作为一个可选参数,用于指定要读取的字符个数,如果省略,则默认一次性读取所有内容。
【例 1】采用循环读取整个文件的内容。
# a.txt 文件内容为:C语言中文网
f = open("a.txt", 'r', True)
while True:
# 每次读取一个字符
ch = f.read(1)
# 如果没有读到数据,跳出循环
if not ch:
break
# 输出ch
print(ch, end='')
f.close()
运行结果为:
C语言中文网
上面程序采用循环依次读取每一个字符(因为程序没有使用 b 模式),每读取到一个字符,程序就输出该字符。
正如从上面程序所看到的,当程序读写完文件之后,推荐立即调用 close() 方法来关闭文件,这样可以避免资源泄露(后续章节会详细介绍 close() 函数)。
注意,在调用 read() 函数读取文件内容时,成功读取的前提是在 open() 函数中使用 r 或 r+ 的模式打开文件,否则(模饥比如将上面程序中 open()的打开模式改为 w),程序会抛出io.UnsupportedOperation异常:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 4, in
ch = f.read(1)
io.UnsupportedOperation: not readable
【例 2】调用 read() 方法时不传入参数,该方法默认会读取全部文件内容。例如:
f = open("旦激返a.txt", 'r', True)
# 直接读取全部文件
print(f.read())
f.close()
运行结果为:
C语言中文网
read()函数抛出UnicodeDecodeError异常的解决方法
当使用 open() 函数打开文本文件时,默认会使用当前操作系统的字符集,比如 Windows 平台,open() 函数默认使用 GBK 字符集。因此,上面程序读取的 a.txt 也必须使用 GBK 字符集保存;否则,程序就会出现UnicodeDecodeError错误。
如果要读取的文件所使用的字符集和当前操作系统的字符集不匹配,则有两种解决方式:
使用二进制模式读取,然后用 bytes 的 decode() 方法恢复成字符串。
利用 codecs 模块的 open() 函数来打开文件,该函数在打开文件时允许指定字符集。
例如,下面程序使用二进制模式来读取文本文件:
# 指定使用二进制方式读取文件内容,a.txt 以 utf-8 编码存储
f = open("a.txt", 'rb', True)
# 直接读取全部文件,并调用bytes的decode将字节内容恢复成字符串
print(f.read().decode('utf-8'))
f.close()
上面程序在调用 open() 函数时,传入了 rb 模式,这表明采用二进制模式读取文件,此时文件对象的 read() 方法返回的是 bytes 对象,程序可调用 bytes 对象的 decode() 方法将它恢复成字符串。由于此时读取的 a.txt 文件是以 UTF-8 的格式保存的,因此程序需要使用 decode() 方法恢复字符串时显铅袜式指定使用 UTF-8 字符集。
下面程序使用 codes 模块的 open() 函数来打开文件,此时可以显式指定字符集:
import codecs
# 指定使用utf-8 字符集读取文件内容
f = codecs.open("a.txt", 'r', 'utf-8', buffering=True)
while True:
# 每次读取一个字符
ch = f.read(1)
# 如果没有读取到数据,则跳出循环
if not ch : break
# 输出ch
print (ch, end='')
f.close()
上面程序在调用 open() 函数时显式指定使用 UTF-8 字符集,这样程序在读取文件内容时就完全没有问题了。