python中,对文件的操作有很多种,常见的操作包括创建、删除、修改权限、读取、写入等,这些操作可大致分为以下 2 类:
对文件的系统级操作功能单一,比较容易实现,可以借助 Python 中的专用模块(os、sys 等),并调用模块中的指定函数来实现。
对于文件的应用级操作,通常需要按照固定的步骤进行操作,且实现过程相对比较复杂。
文件的应用级操作可以分为以下 3 步,每一步都需要借助对应的函数实现:
一个文件,必须在打开之后才能对其进行操作,并且在操作结束之后,还应该将其关闭,这 3 步的顺序不能打乱。
open() 函数用于创建或打开指定文件
代码演示:
# 以默认方式打开文件
f = open('test1234.txt')
# 输出文件是否已经关闭
print(f.closed)
# 输出访问模式
print(f.mode)
#输出编码格式
print(f.encoding)
# 输出文件名
print(f.name)
# 输出文件内容
print(f.read())
执行结果:
False
r
cp936
test1234.txt
该文本会写入到文件中
看到我了吧!
其中:
f.closed:判断文件是否己经关闭。
f.mode:返回打开文件时,采用的文件打开模式;当以默认模式打开文件时,默认使用 r 权限,该权限要求打开的文件必须存在
f.encoding:返回打开文件时使用的编码格式,cp936(实际上就是 GBK 编码)。
f.name:返回文件的名称;
f.read: 读取文本内容
注意,使用 open() 函数打开的文件对象,必须手动进行关闭(后续章节会详细讲解),Python 垃圾回收机制无法自动回收打开文件所占用的资源。
如果文件是以文本模式(非二进制模式)打开的,则 read() 函数会逐个字符进行读取;反之,如果文件以二进制模式打开,则 read() 函数会逐个字节进行读取。
新建一个文本 文本名字test1234.txt 文本内容:“qwertyuiop 读取文本内容了吗“
我们先读取部分数据
代码演示:
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.read(6))
#关闭文件
f.close()
执行结果:
qwerty
读取全部数据:
代码演示:
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.read())
#关闭文件
f.close()
执行结果:
qwertyuiop
读取文本内容了吗
readline() 函数用于读取文件中的一行,包含最后的换行符“\n”。
代码演示:
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.readline())
#关闭文件
f.close()
执行结果:
qwertyuiop
由于 readline() 函数在读取文件中一行的内容时,会读取最后的换行符“\n”,再加上 print() 函数输出内容时默认会换行,所以输出结果中会看到多出了一个空行。
readlines() 函数用于读取文件中的所有行,它和调用不指定 size 参数的 read() 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容。
代码演示:
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.readlines())
#关闭文件
f.close()
执行结果:
['qwertyuiop\n', '读取文本内容了吗\n']
和 readline() 函数一样,readlines() 函数在读取每一行时,会连同行尾的换行符一块读取。
write() 函数,可以向文件中写入指定内容。
注意,在使用 write() 向文件中写入数据,需保证使用 open() 函数是以 r+、w、w+、a 或 a+ 的模式打开文件,否则执行 write() 函数会抛出 io.UnsupportedOperation 错误。
如果打开文件模式中包含 w(写入),那么向文件中写入内容时,会先清空原文件中的内容,然后再写入新的内容。
代码演示:
# 读取文件内容
f = open("test1234.txt",'w')
# 写入一行数据
f.write("准备写第一行数据 python")
#关闭文件
f.close()
执行结果:
准备写第一行数据 python
打开文件模式中包含 a(追加),则不会清空原有内容,而是将新写入的内容会添加到原内容后边。
代码展示:
# 读取文件内容
f = open("test1234.txt",'a')
# 写入一行数据
f.write("\n追加第二行数据 python")
#关闭文件
f.close()
执行结果:
准备写第1行数据 python
追加第二行数据 python
writelines() 函数,可以实现将字符串列表写入文件中。
通过writelines() 函数 将一个文本中的内容复制到另一个文本中
代码演示:
f = open('test1234.txt', 'r')
n = open('test123.txt','w+')
n.writelines(f.readlines())
n.close()
f.close()
执行结果:
test1234.txt
准备写第1行数据 python
追加第二行数据 python
test123.txt
准备写第1行数据 python
追加第二行数据 python
使用 writelines() 函数向文件中写入多行数据时,不会自动给各行添加换行符。上面例子中,之所以test123.txt文件中会逐行显示数据,是因为 readlines() 函数在读取各行数据时,读入了行尾的换行符。
close() 函数是专门用来关闭已打开文件的
如果我们不调用 close() 函数关闭已打开的文件,确定不影响读取文件的操作,但会导致 write() 或者 writeline() 函数向文件中写数据时,写入失败。
tell() 函数用于判断文件指针当前所处的位置
代码演示:
f = open('test1234.txt', 'r')
print(f.tell())
print(f.read(3))
print(f.tell())
执行效果:
0
qwe
3
seek() 函数用于将文件指针移动至指定位置
代码演示:
f = open('test1234.txt', 'r')
print(f.read())
print("###########")
# 将文件指针从文件开头,向后移动到 5 个字符的位置
f.seek(5)
print(f.tell())
print(f.read(1))
执行结果:
qwertyuiop
asdfghjkl
zxcvbnm
###########
5
y
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。