对文件的操作是一件很重要的事。因为许多数据都存储在文件或者数据库中,而不能全部都在脚本中操作。这里的I/O指的是输入流(Input Stream)和输出流(Output Stream)。
文件读取
首先我们先写一个txt文件,在这里,我在这个txt文件中添加了一些单词,并命名为“words1.txt”,然后对其进行操作。
f = open("words1.txt","r")
print(f.read())
运行的结果如下:
就这样就可以吧文件内容读取出来了。但是此时文件内容是被读取到了内存中。不信的话可以尝试保持这个界面,然后去右键删除文档。这时候会出来一个弹窗:
这样是无法删除文件的。所以在我们不需要使用这个文件时,为了避免占用电脑资源,要调用f.close()
函数将文件关闭并释放资源。
但是有时候文件操作会产生异常。在Java中,我们会采用try……catch……(finally……)
的形式。在Python中,也是采用类似的形式。
try:
f = open("words1.txt","r")
print(f.read())
finally:
if f:
f.close()
当然,为了体现Python的简洁性,也是有两句话搞定的:
with open("words1.txt","r") as file:
print(file.read())
read()&readline()&readlines()
来比较一下这三个函数,理论不说那么多,直接上代码感受一下吧。
- read()
首先是read()
with open("words1.txt","r") as file:
print(file.read())
打印出来的效果如图:
这个在上面已经实验过了。
- readline()
with open("words1.txt","r") as file:
print(file.readline())
运行结果图:
readline()顾名思义就是读取一行,所以也很简单啦。
- readlines()
和readline()
相似,readlines()
是也是以行来读取数据的,然而前者只读取一行,而后者读取全部的行。
with open("words1.txt","r") as file:
print(file.readlines())
如果要读取比较大的文件,也可以用这个函数:
with open("words1.txt","r") as file:
for line in file.readlines():
print(line.strip())
运行结果如图:
其中,这个strip()
函数可以用来删除你想删除的字符,将这些字符当参数传入即可。如果strip()的参数为空,那么会默认删除字符串头和尾的空白字符(包括\n,\r,\t这些)。
文件写入
与读取类似,先要用open()
打开,但是在表示符那里要用"w","w+","wb"
等模式。
f = open("words1.txt","w")
f.write("hey yoyo")
f.close()
这里一定要用f.close()
。因为调用了write()
函数仅是把内容写进内存,直到对文件执行关闭后,才真正写入文件。为了避免异常,可以采用上述的方式:
with open("words1.txt","w") as file:
file.write("finished!")
这样,以前的数据都会被清空而传入了新数据,所以大家可以新建一个文件来实验。如果原本没有这个文件,调用了open()
这个函数之后,会自动生成一个。