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