进阶第十八颗 Python对文件的操作

本文详细介绍如何用Python进行文件的创建、读取、写入及删除等操作。文章讲解了使用open函数的不同模式,并通过实例演示了readline、readlines及read方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Windows中,我们可以很容易地创建、修改和删除文件。我们熟悉的文件类型也有很多:txt、mkv、mp3、docx...

在Python中,我们依旧可以执行创建、修改和删除文件的操作。下面一起来看:

 1、示例

我们可以先在python.exe所在目录,我的目录是C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32,新建一个txt文档,写入一些内容。

file=open("sample111.txt",'r')
lines=file.readlines()
for line in lines:
    print(line)
file.close()

看一下执行的结果:

>>> import readline
11111111111

22222222222

33333333333

44444444444

55555555555

我的txt文档,文件名是sample111,后缀是txt。内容有5行。

2、分析一下

2.1 格式

打开文件,就要关闭文件。所以可以看到有open,最后就要加上close。

file=open('a','b')。其中a是一个包含文档路径的文件名;b是打开文件时附带的指令,具体见下表:

r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

如果只提供了路径和文档名,而未提供附带指令,则默认为'r',也就是只读。

上述指令列表十分重要,比如'w',会覆盖现有文件内容,所以使用时一定要当心!!!

3、使用open就要使用对应的close。编码规模小的时候没有问题,一旦编码行暴增会出现忘记关闭的情况,那有没有不需要使用close的办法呢。回答是肯定的。

>>> with open('sample111.txt') as f:
    for i in f:
        print(i)

        
11111111111

22222222222

33333333333

44444444444

55555555555

区别在于,在open之前输入了一个with,这样close就不需要我们手动执行。

4、读文件。

以r模式打开的文档,可以有几种方法读取里面的内容,分别是readline()、readlines()和read()。大家看一下区别。

先看readline()。sample111.txt文档中有5行,使用readline只能读取第一行。

>>> file=open('sample111.txt','r')
>>> a=file.readline()
>>> print(a)
11111111111

>>> print(a)
11111111111

>>> file.close()

再看readlines()。一次性读取文档中所有内容,并把内容以列表的形式存储为一个可迭代对象。

>>> file=open('sample111.txt','r')
>>> a=file.readlines()
>>> print(a)
['11111111111\n', '22222222222\n', '33333333333\n', '44444444444\n', '55555555555']
>>> file.close()

最后看read()

>>> file=open('sample111.txt','r')
>>> a=file.read()
>>> print(a)
11111111111
22222222222
33333333333
44444444444
55555555555
>>> file.close()

 5、写文件。

>>> file=open('sample111.txt','w')
>>> file.write('I wanna learn Python!!!')
23
>>> file.close()

从指令列表中可以看到,当传入的指令是‘w’时,会对已有文档做清除内容的操作,这个大家一定要看清!!!别问我是怎么知道的。

>>> file=open('sample222.txt','w')
>>> file.write('What r u doing?')
15
>>> file.close()

此时python.exe所在目录中就会生成一个新的txt文档,文档名是sample222。内容呢,就是上面的:What r u doing?

with依然可以使用,用来自动执行close()的操作。

 6、前面说过,open指定的文档,可以是一个包含文档路径的文档,我的sample111.txt文档的路径是什么呢?是这个:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\sample111.txt

Python承认的路径是这样的:

C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/sample111.txt

斜杠不一样!!!

>>> with open('C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/sample111.txt','r') as f:
    for i in f:
        print(i)

        
I wanna learn Python!!!

如果你一意孤行,非要使用Windows提供的路径,机会得到一个报错,说找不到sample111.txt这个文档。

转载于:https://www.cnblogs.com/tuobeiwoniu/p/8707836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值