进阶第十八颗 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()

 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这个文档。

posted @ 2018-04-03 12:38  驼背蜗牛  阅读(132)  评论(0编辑  收藏  举报