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

Posted 驼背蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进阶第十八颗 Python对文件的操作相关的知识,希望对你有一定的参考价值。

在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()

 

以上是关于进阶第十八颗 Python对文件的操作的主要内容,如果未能解决你的问题,请参考以下文章

C++进阶第十八篇——AVL树(概念+平衡因子的调节+旋转+代码实现)

进阶第十五课 Python模块之Numpy

Python开发第十八篇:MySQL

Python开发第十八篇:MySQL

Python进阶第十篇模块(上)

第十二章:Python の 网络编程进阶