Python3 读写txt文件

文件

打开文件

要读取文件,就得先打开一个文件,可以使用Python内置的open()函数来打开一个文件,open(<文件名>,<打开模式>)

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

上面是一个最简单的打开文件的例子,其中在传入文件名时需要将文件所在的绝对路径写上,如果不写则默认会在当前运行Python环境的目录下去寻找该文件,如果文件不在此处,那程序将会报错。

上面说到如果文件不存在,程序将报错,这个错误正是open()函数抛出的一个IOError异常,该异常会给出错误码和详细的信息告诉你该文件不存在。

>>> f = open(r"C:/Users/python/text.txt")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/python/text.txt'

由于读写文件经常会出现IOError,但为了保证无论是否出错都能正常关闭文件,我们可以使用try...except...finally来解决此问题:

try:
    f = open('/path/to/file', 'r')
    print(f.read())
except IOError as e:
    print("IOError:",e) 
finally:
    if f:
        f.close()

以上程序,如果文件读写出现IOError,会被except捕获,并打印相关信息,同时,由于finally语句块内语句一定会执行,因此只要符合条件,文件就会被关闭。

文件打开模式
文件的打开模式描述
‘r’只读模式,默认值,如果文件不存在,返回FileNotFoundError
‘w’覆盖写模式,文件不存在则创建,存在则完全覆盖
‘x’创建写模式,文件不存在则创建,存在则返回FileExistsError
‘a’追加写模式,文件不存在则创建,存在则在文件最后追加内容
‘b’二进制文件模式
‘t’文本文件模式,默认值
‘+’与r/w/x/a一同使用,在原功能基础上增加同时读写功能
文件内容读取

如果文件打开成功,接下来可以文件了

>>> f.read()
"Python is good!"
操作方法描述
f.read(size = -1)读入全部内容,如果给出参数,读入前size长度
>>> s = f.read(2)
f.readline(size = -1)读入一行内容,如果给参数,读入该行前size长度
>>>s = f.readline()
f.readlines(hint=-1)读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行
文件的全文本操作
# 遍历全文本:方法一	
fname = input("请输入要打开的文件名称:")			# 文件路径也要一起输入
fo = open(fname,'r')
txt = fo.read()
# 对全文txt进行处理的代码
fo.close()
# 方法二:按数量读入,逐步处理(适合处理大文件)
fname = input("请输入要开打的文件名称:")			# 文件路径也要一起输入
fo = open(fname,'r')
txt = fo.read(2)								# 读入文件的前2长度
while txt != "":								# 如果txt不为空则继续读入
    # 对txt进行处理
    txt = fo.read(2)
fo.close()
文件的逐行操作
# 逐行遍历文件:方法一,一次读入,分行处理
fname = input("请输入要打开的文件名称:")			# 文件路径也要一起输入
fo = open(fname,'r')
for line in fo.readlines():
    print(line)
fo.close()
# 方法二:分行读入,逐行处理(适合处理大文件)
fname = input("请输入要打开的文件名称:")			# 文件路径也要一起输入
fo = open(fname,'r')
for line in fo:
    print(line)
fo.close()
二进制文件读取
>>> f = open(r'test.png','rb')
>>> f.read()
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\  # 十六进制表示的字节
字符编码文件读取

有些时候未必所有文本文件都是UTF-8编码的,这种情况需要给open()函数传入encoding参数,例如读取GBK编码的文件:

>>> f = open(r'test_gbk.txt', 'r', encoding='gbk')
>>> f.read()
'你好'

特殊的,有些文本文件中可能夹杂了一些非法的编码字符,这样会使得程序遇到UnicodeDecodeError,此时open()函数还可以接收一个error参数,表示如果遇到编码错误后如何处理。而最简单的方式就是忽略该错误:

>>> f = open(r'test_gbk.txt', 'r', encoding='gbk',error='ignore')
文件的写入
操作方法描述
f.writes(s)向文件写入一个字符串或字节流
>>>f.writes(“中国是一个伟大的国家”)
f.writelines(lines)将一个元素全为字符串的列表写入文件(将各个元素直接拼接然后写入文件)
>>>ls = [“中国”,“法国”,“美国”]
>>>f.writelines(ls)
中国法国美国
f.seek(offset)改变当前文件操作指针的位置,offset含义如下:0-文件开头;1-当前位置;2-文件结尾
>>>f.seek(0) #回到文件开头
fo = open(r"output.txt,''w+")
ls = ["中国","法国","美国"]
fo.writelines(ls)
for line in fo:
    print(line)
fo.close()

# 以上的程序是不会有输出的,因为在写入完成后,指针处于文件结尾,此时进行打印就会没有内容
# 想要有输出需要让指针回到文件开头,如下

fo = open(r"output.txt,''w+")
ls = ["中国","法国","美国"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)
fo.close()
# 输出:中国法国美国

这里需要注意的是,不论是读取文件还是写入文件我们都在程序的最后使用了close()函数,该函数是用来关闭文件的,由于操作文件始终还是通过操作系统提供的接口来对文件对象进行读写,所以在文件使用完毕后需要关闭文件,以免占用操作系统资源。 甚至如果在写入文件时,没有关闭文件,那么文件是不会有任何修改的。

使用with

在上面讲到,读写文件后需要使用close()函数关闭文件释放资源,但很多时候,人们往往会忘记这最后一步的操作;而with写法的出现,则使得这一步骤的省略,且实现对文件的读写更加简便。

with open(r'test.txt','r') as f:
    print(f.read())
读取大文件

通过前文,我们知道读取文件时可以用read()或者readlines()来读取,但这些都是一次性地读入,在文件不是很大的时候,这样做确实能够保证速度,但如果遇到大文件,这种方法就不可取了。Python中有一个fileinput的模块,可以用它来操作大文件。

from fileinput
>>> for line in fileinput.input(r"hamlet.txt"):
...  print(line,end="")
...

Tips

可以观察到在上文的文件路径输入时,路径前都会有个r,这个的作用是为了使程序不将路径字符串进行转义。这样当路径中出现特殊字符时,就不会被转义,而是以原始字符串常量去处理该路径字符串。这种做法常见于正则表达式于系统路径这两方面。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用Python3读取UTF-8编码的txt文件,可以使用以下代码: ``` with open('file.txt', 'r', encoding='utf-8') as f: content = f.read() ``` 其中,`file.txt`是要读取文件名,`r`表示以只读模式打开文件,`encoding='utf-8'`表示使用UTF-8编码读取文件。`with`语句可以自动关闭文件,`f.read()`可以读取整个文件内容并存储在`content`变量中。 ### 回答2: Python3读取txt文件的时候要注意文件的编码格式。如果文件是以UTF-8编码格式来存储的,那么需要用UTF-8的编码方式来读取文件。 步骤如下: 1. 打开文件 使用Python内置的open()函数打开txt文件。在这个函数中,需要指定文件路径、打开模式和编码方式。其中,文件路径需要是绝对路径或相对路径,打开模式可以是“r”表示只读模式。例如,假设我们要读取一个名为“file.txt”的UTF-8编码格式的文件,它的路径为"D:\test\file.txt": file = open("D:\test\file.txt", "r", encoding="UTF-8") 2. 读取文件内容 使用Python内置的read()、readline()或readlines()函数读取文件内容,具体使用哪个函数取决于需要读取文件的格式。read()函数可以一次性读取整个文件内容,这对于文件较小的情况下是比较方便的。但对于较大的文件,则需要分批次读取。readline()函数是一行一行地读取文件内容,而readlines()函数则是读取整个文件,但是按照行保存成一个列表。 例如,我们使用read()函数读取上面的file.txt文件: content = file.read() 3. 关闭文件读取文件内容后,要使用close()函数关闭文件,以释放资源。 file.close() 完整的读取Python3读取txt文件UTF-8的代码示例: file = open("D:\test\file.txt", "r", encoding="UTF-8") content = file.read() file.close() print(content) 以上就是Python3读取txt文件UTF-8的步骤。在实际应用中,读取文件通常要加上错误处理、文件类型判断等其他处理。更多详细内容,可以参考Python官方文档。 (本回答由AI助手完成) ### 回答3: Python3是一种高级的编程语言,常用于数据分析、人工智能和Web开发等领域。当我们处理文本文件时,其中一种常见的格式就是txt文件读取txt文件一般需要注意文件编码、文件路径、读写权限等问题。下面我会介绍一下如何通过Python3读取txt文件utf-8编码。 首先,我们需要打开txt文件,在Python内建的函数中,操作文件的函数有open()和close()。可以使用open()函数以只读模式打开文件读取数据,然后使用close()函数关闭文件。 代码示例: ``` python file = open('file.txt', 'r', encoding='utf-8') data = file.read() file.close() ``` 上述代码中,我们使用open()函数打开了名为"file.txt"的文件,该文件的指定编码为utf-8,使用只读模式打开。然后,我们使用read()函数读取文件中的数据并赋值给变量data。最后,我们使用close()函数关闭文件。 在某些情况下,读取整个文件可能有些大,因此可以使用循环逐行读取Python提供了一种方便的方法,即利用for循环,逐行读取txt文件中的内容。 代码示例: ``` python with open('file.txt','r',encoding='utf-8') as f: for line in f: print(line) ``` 上述代码使用了with语句,该语句可以帮助我们自动关闭文件(不再需要使用close()函数)。读取txt文件的方式是,打开名为"file.txt"的文件(同样指定为utf-8编码),并逐行读取文件中的每一行。每次读取到一行后,我们可以进行一些处理操作,例如打印该行内容。 除了read()和逐行读取Python还提供了读取指定行的方法。例如,如果我们只想读取文件的第2行,可以使用readlines()方法读取文件中的所有行,并选择需要的行数读取。 代码示例: ``` python with open('file.txt', 'r', encoding='utf-8') as f: lines = f.readlines() print(lines[1]) ``` 上述代码使用with语句打开名为"file.txt"的文件,并读取所有行。读取到所有行后,我们选择读取索引为1的内容(即第2行)并打印。 通过上述介绍,我们可以发现,Python3读取txt文件utf-8编码非常简单。只需要使用open()函数指定编码和读写模式,然后使用read()或逐行读取方式,即可轻松地读取txt文件中的内容。同时,我们也需要注意文件路径的设置和文件权限的设置,以确保Python能够顺利读取txt文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值