前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python文件基本操作

Python文件基本操作

原创
作者头像
织幻妖
修改2021-03-08 17:58:55
7010
修改2021-03-08 17:58:55
举报
文章被收录于专栏:用户7552167的专栏

概念

python中,对文件的操作有很多种,常见的操作包括创建、删除、修改权限、读取、写入等,这些操作可大致分为以下 2 类:

  1. 删除、修改权限:作用于文件本身,属于系统级操作。
  2. 写入、读取:是文件最常用的操作,作用于文件的内容,属于应用级操作

对文件的系统级操作功能单一,比较容易实现,可以借助 Python 中的专用模块(os、sys 等),并调用模块中的指定函数来实现。

对于文件的应用级操作,通常需要按照固定的步骤进行操作,且实现过程相对比较复杂。

文件的应用级操作可以分为以下 3 步,每一步都需要借助对应的函数实现:

  1. 打开文件:使用 open() 函数,该函数会返回一个文件对象;
  2. 对已打开文件做读/写操作:读取文件内容可使用 read()、readline() 以及 readlines() 函数;向文件中写入内容,可以使用 write() 函数。
  3. 关闭文件:完成对文件的读/写操作之后,最后需要关闭文件,可以使用 close() 函数。

一个文件,必须在打开之后才能对其进行操作,并且在操作结束之后,还应该将其关闭,这 3 步的顺序不能打乱。

Python open() 函数

open() 函数用于创建或打开指定文件

代码演示:

代码语言:javascript
复制
# 以默认方式打开文件
f = open('test1234.txt')

# 输出文件是否已经关闭
print(f.closed)

# 输出访问模式
print(f.mode)

#输出编码格式
print(f.encoding)

# 输出文件名
print(f.name)

# 输出文件内容
print(f.read())

执行结果:

代码语言:javascript
复制
False
r
cp936
test1234.txt
该文本会写入到文件中
看到我了吧!

其中:

f.closed:判断文件是否己经关闭。

f.mode:返回打开文件时,采用的文件打开模式;当以默认模式打开文件时,默认使用 r 权限,该权限要求打开的文件必须存在

f.encoding:返回打开文件时使用的编码格式,cp936(实际上就是 GBK 编码)。

f.name:返回文件的名称;

f.read: 读取文本内容

注意,使用 open() 函数打开的文件对象,必须手动进行关闭(后续章节会详细讲解),Python 垃圾回收机制无法自动回收打开文件所占用的资源。

Python read()函数

如果文件是以文本模式(非二进制模式)打开的,则 read() 函数会逐个字符进行读取;反之,如果文件以二进制模式打开,则 read() 函数会逐个字节进行读取。

新建一个文本 文本名字test1234.txt 文本内容:“qwertyuiop 读取文本内容了吗“

我们先读取部分数据

代码演示:

代码语言:javascript
复制
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.read(6))
#关闭文件
f.close()

执行结果:

代码语言:javascript
复制
qwerty

读取全部数据:

代码演示:

代码语言:javascript
复制
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.read())
#关闭文件
f.close()

执行结果:

代码语言:javascript
复制
qwertyuiop
读取文本内容了吗

python readline()函数

readline() 函数用于读取文件中的一行,包含最后的换行符“\n”。

代码演示:

代码语言:javascript
复制
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.readline())
#关闭文件
f.close()

执行结果:

代码语言:javascript
复制
qwertyuiop

由于 readline() 函数在读取文件中一行的内容时,会读取最后的换行符“\n”,再加上 print() 函数输出内容时默认会换行,所以输出结果中会看到多出了一个空行。

Python readlines()函数

readlines() 函数用于读取文件中的所有行,它和调用不指定 size 参数的 read() 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容。

代码演示:

代码语言:javascript
复制
# 读取文件内容
f = open("test1234.txt")
#读取到的数据
print(f.readlines())
#关闭文件
f.close()

执行结果:

代码语言:javascript
复制
['qwertyuiop\n', '读取文本内容了吗\n']

和 readline() 函数一样,readlines() 函数在读取每一行时,会连同行尾的换行符一块读取。

Python write()函数

write() 函数,可以向文件中写入指定内容。

注意,在使用 write() 向文件中写入数据,需保证使用 open() 函数是以 r+、w、w+、a 或 a+ 的模式打开文件,否则执行 write() 函数会抛出 io.UnsupportedOperation 错误。

如果打开文件模式中包含 w(写入),那么向文件中写入内容时,会先清空原文件中的内容,然后再写入新的内容。

代码演示:

代码语言:javascript
复制
# 读取文件内容
f = open("test1234.txt",'w')
# 写入一行数据
f.write("准备写第一行数据 python")
#关闭文件
f.close()

执行结果:

代码语言:javascript
复制
准备写第一行数据 python

打开文件模式中包含 a(追加),则不会清空原有内容,而是将新写入的内容会添加到原内容后边。

代码展示:

代码语言:javascript
复制
# 读取文件内容
f = open("test1234.txt",'a')
# 写入一行数据
f.write("\n追加第二行数据 python")
#关闭文件
f.close()

执行结果:

代码语言:javascript
复制
准备写第1行数据 python
追加第二行数据 python

Python writelines()函数

writelines() 函数,可以实现将字符串列表写入文件中。

通过writelines() 函数 将一个文本中的内容复制到另一个文本中

代码演示:

代码语言:javascript
复制
f = open('test1234.txt', 'r')
n = open('test123.txt','w+')
n.writelines(f.readlines())
n.close()
f.close()

执行结果:

test1234.txt

代码语言:javascript
复制
准备写第1行数据 python
追加第二行数据 python

test123.txt

代码语言:javascript
复制
准备写第1行数据 python
追加第二行数据 python

使用 writelines() 函数向文件中写入多行数据时,不会自动给各行添加换行符。上面例子中,之所以test123.txt文件中会逐行显示数据,是因为 readlines() 函数在读取各行数据时,读入了行尾的换行符。

Python close()函数

close() 函数是专门用来关闭已打开文件的

如果我们不调用 close() 函数关闭已打开的文件,确定不影响读取文件的操作,但会导致 write() 或者 writeline() 函数向文件中写数据时,写入失败。

tell() 函数

tell() 函数用于判断文件指针当前所处的位置

代码演示:

代码语言:javascript
复制
f = open('test1234.txt', 'r')
print(f.tell())
print(f.read(3))
print(f.tell())

执行效果:

代码语言:javascript
复制
0
qwe
3

seek()函数

seek() 函数用于将文件指针移动至指定位置

代码演示:

代码语言:javascript
复制
f = open('test1234.txt', 'r')
print(f.read())
print("###########")
# 将文件指针从文件开头,向后移动到 5 个字符的位置
f.seek(5)
print(f.tell())
print(f.read(1))

执行结果:

代码语言:javascript
复制
qwertyuiop
asdfghjkl
zxcvbnm
###########
5
y

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念
  • Python open() 函数
  • Python read()函数
  • python readline()函数
  • Python readlines()函数
  • Python write()函数
  • Python writelines()函数
  • Python close()函数
  • tell() 函数
  • seek()函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档