open()、append、file.read()、file.readline()、file.readlines()、file.close()、with open … as f
读写文件前,必须了解,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象
(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)
1. open
使用 open
能够打开一个文件, open
的第一个参数为文件名和路径 ‘my file.txt’, 第二个参数为将要以什么方式打开它, 比如 w
为可写方式. 如果计算机没有找到 ‘my file.txt’ 这个文件, w
方式能够创建一个新的文件, 并命名为 my file.txt
1 | text = 'This is my first test.' |
2. append
我们先保存一个已经有3行文字的 “my file.txt” 文件, 文件的内容如下:
1 | This is my first test. |
使用添加文字的方式给这个文件添加一行 “This is appended file.”, 并将这行文字储存在 append_file 里,注意\n的适用性:
1 | append_text='\nThis is appended file.' # 为这行文字提前空行 "\n" |
This is my first test.
This is the second line.
This the third line.
This is appended file.
3. file.read()
调用 read()
会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)
方法,每次最多读取size
个字节的内容。
1 | file= open('my file.txt','r') |
This is my first test.
This is the second line.
This the third line.
This is appended file.
4. file.readline()
如果想在文本中一行行的读取文本, 可以使用 file.readline()
, file.readline()
读取的内容和你使用的次数有关, 使用第二次的时候, 读取到的是文本的第二行, 并可以以此类推:
1 | file= open('my file.txt','r') |
This is my first test.
1 | second_read_time=file.readline() # 读取第二行 |
This is the second line.
5. file.readlines()
如果想要读取所有行, 并可以使用像 for
一样的迭代器迭代这些行结果, 我们可以使用 file.readlines()
, 将每一行的结果存储在 list
中, 方便以后迭代.
1 | file= open('my file.txt','r') |
['This is my first test.\n', 'This is the second line.\n', 'This the third line.\n', 'This is appended file.']
1 | # 之后如果使用 for 来迭代输出: |
每次都这么写实在太繁琐,所以,Python引入了
with
语句来自动帮我们调用close()
方法:
7. with open … as f
1 | with open('/path/to/file', 'r') as f: |
这和前面的try … finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。
Checking if Disqus is accessible...