python读文本文件
Ⅰ 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 文件不存在,创建该文件并写入:
在上例基础上,继续,该文件被重写:
继续,这次使用追加,会在文件结尾追加:
https://blog.csdn.net/msspark/article/details/86745391
https://www.cnblogs.com/tianyiliang/p/8192703.html
https://www.cnblogs.com/camilla/p/7234657.html
https://blog.csdn.net/songlh1234/article/details/83316468
https://www.php.cn/python-tutorials-412484.html
https://blog.csdn.net/weay/article/details/80946152
https://blog.csdn.net/xc_zhou/article/details/81044836
Ⅱ 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如何读写文本文件
1.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。
file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )
注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。
2.读文件读文本文件input = open('data', 'r')
#第二个参数默认为r
input = open('data')
读二进制文件input = open('data', 'rb')
读取所有内容file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )
读固定字节file_object = open('abinfile', 'rb')
try:
while True:
chunk = file_object.read(100)
if not chunk:
break
do_something_with(chunk)
finally:
file_object.close( )
读每行list_of_all_the_lines = file_object.readlines( )
如果文件是文本文件,还可以直接遍历文件对象获取每行:
for line in file_object:
process line
3.写文件写文本文件output = open('data.txt', 'w')
写二进制文件output = open('data.txt', 'wb')
追加写文件output = open('data.txt', 'a')
output .write("\n都有是好人")
output .close( )
写数据file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )
Ⅳ 使用 Python 读写文件
有些数据是临时的,它们在应用程序运行时存储在内存中,然后丢弃。但是有些数据是持久的。它们存储在硬盘驱动器上供以后使用,而且它们通常是用户最关心的东西。对于程序员来说,编写代码读写文件是很常见的,但每种语言处理该任务的方式都不同。本文演示了如何使用 Python 处理文件数据。
在 Linux 上,你可能已经安装了 Python。如果没有,你可以通过发行版软件仓库安装它。例如,在 CentOS 或 RHEL 上:
在 macOS 上,你可以使用 MacPorts或Homebrew安装。在 Windows 上,你可以使用Chocolatey安装。
一旦安装了 Python,打开你最喜欢的文本编辑器,准备好写代码吧。
如果你需要向一个文件中写入数据,记住有三个步骤:
这与你在计算机上编码、编辑照片或执行其他操作时使用的步骤完全相同。首先,打开要编辑的文档,然后进行编辑,最后关闭文档。
在 Python 中,过程是这样的:
这个例子中,第一行以 写 模式打开了一个文件,然后用变量 f 表示,我使用了 f 是因为它在 Python 代码中很常见,使用其他任意有效变量名也能正常工作。
在打开文件时,有不同的模式:
第二行表示向文件中写入数据,本例写入的是纯文本,但你可以写入任意类型的数据。
最后一行关闭了文件。
对于快速的文件交互,常用有一种简短的方法可以写入数据。它不会使文件保持打开状态,所以你不必记得调用 close 函数。相反,它使用 with 语法:
如果你或你的用户需要通过应用程序需要向文件中写入一些数据,然后你需要使用它们,那么你就需要读取文件了。与写入类似,逻辑一样:
同样的,这个逻辑反映了你一开始使用计算机就已知的内容。阅读文档,你可以打开、阅读,然后关闭。在计算机术语中,“打开”文件意味着将其加载到内存中。
实际上,一个文本文件内容肯定不止一行。例如,你需要读取一个配置文件、 游戏 存档或乐队下一首歌曲的歌词,正如你打开一本实体书时,你不可能立刻读完整本书,代码也只能解析已经加载到内存中的文件。因此,你可能需要遍历文件的内容。
示例的第一行指明使用 读 模式打开一个文件,然后文件交由变量 f 表示,但就像你写数据一样,变量名是任意的。 f 并没有什么特殊的,它只是单词 “file” 的最简表示,所以 Python 程序员会经常使用它。
在第二行,我们使用了 line ,另一个任意变量名,用来表示 f 的每一行。这告诉 Python 逐行迭代文件的内容,并将每一行的内容打印到输出中(在本例中为终端或IDLE)。
就像写入一样,使用 with 语法是一种更简短的方法读取数据。即不需要调用 close 方法,方便地快速交互。
使用 Python 有很多方法向文件写入数据,包括用 JSON、YAML、TOML等不同的格式写入。还有一个非常好的内置方法用于创建和维护SQLite数据库,以及许多库来处理不同的文件格式,包括图像、音频和视频等。
via: https://opensource.com/article/21/7/read-write-files-python
作者:Seth Kenlon选题:lujun9972译者:MjSeven校对:turbokernel
Ⅳ python操作文本文件
在磁盘上读写文件之前,必须先打开这个文件。打开文件就需要提供文件的路径。
在与Python程序同一个目录下,我们有一个名为 pi.txt 的文件,它的内容如下:
现在使用Python来打开和关闭它:
执行此程序不会有任何输出,这表示着打开和关闭文件都得到了正确执行。
可以看到,使用 open() 函数打开文件,参数为文件名(或文件路径);该函数会返回一个文件句柄,文件句柄并不会实际保存文件的内容,而是代表着一种操作,在上面的例子中,文件句柄被赋值给变量 fhand 。
打开文件后,程序具有读(默认)该文件的权限。
最后,使用文件句柄的 close() 方法关闭文件。这非常重要,因为使用完而没有关闭的文件会占用内存或造成安全问题。
如果Python找不到该文件,则会返回错误,比如下面这样:
Python提示我们没有相应的文件或者目录: 'pii.txt'。
打开文件后就可以对文件进行操作:
fhand.read() 方法将文件内容作为一个字符串返回。
文件中的每一行末尾使用换行符 \n 表示换行,例子中方法 rstrip() 去掉文本中的换行符,然后输出。
程序的运行效果如下:
如果在文件关闭之前程序发生BUG意外退出,则文件不会关闭,为了避免此类事件的发生,可以使用 with 语句:
with 语句的特点是即便在操作文件时发生错误,文件也会自动被清理。
fhand.read() 虽然可以读取文本内容,但是当我们想要逐行处理文件内容,或者文件很大而无法一次性加载进内存的时候,就不适用了。
可以使用 for 语句逐行处理文件内容:
本程序中将文件名保存在变量 filename 中。
打开文件后,使用 for 语句按行读取文件内容。例子中,每次循环依次取一行文本以字符串的格式保存在变量 line 中,每次循环中变量 count 自增1。
这个程序的作用是,打开程序所在目录的 when_old.txt 文件,然后统计行数,并输出结果。
when_old.txt 文件的内容是:
可以使用其他方法操作字符串 line :
程序将以 'And' 开头的行打印出来。
打开文件后,默认的权限是读(r),如果要写文件,则需要使用写(w)或者追加(a)权限。
w权限,打开一个文件用于写入。如果该文件存在,则覆盖该文件;如果该文件不存在,则创建该文件。
a权限,打开一个文件用于追加。如果该文件存在,在文件末尾追加;如果该文件不存在,则创建该文件。
下面是一个使用w权限打开文件的例子:
例子中使用w权限打开该文件,并写入两行。(如果该文件存在,则内容会被覆盖)
fhand.write() 不会自动添加换行符,所以如果需要换行,需在末尾添加 \n 。
下面我们写一个统计文件中词频的程序。
它会统计文件中各个词的出现的次数,然后由高到低显示出前5个词。
首先我们完成打开和关闭文件的程序内容:
在例子中,由用户输入文件名,并且使用异常捕获以处理文件打开时的错误。
下面对内容进行统计:
这个程序:
如此,我们就在字典中存放了 单词:次数 的键值对。
由于字典不能保存顺序,所以不能对其进行排序。为此,将每个键值对都添加到一个列表中:
在列表 word_list 中,每一项都是一个元组,每个元组第一个值是单词出现的次数,第二个值是单词内容。
对其进行逆向(由大到小)排序:
打印最终结果:
整个程序如下:
下面是程序运行结果的示例:
Ⅵ Python读取文件内容的方法有几种
filename=open('i:\\install\\test.txt','r+')#读取xx路径xx文件;r+代表的是读写并存方式 print filename.read()#读取所有的文件
Ⅶ 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读取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+:以二进制方式打开,可读、写文件。如果文件不存在,创建该文件;如果文件存在,会清空,在打开(覆盖)