目录
1、open函数
2、write函数
3、read函数
4、文件指针
5、close函数
6、with语句
7、判断函数
与C类似,在Python中使用open函数,可以进行文件操作,其原型为:open(file, mode)。
file表示文件的地址,既可以是绝地路径也可以是相对路径;mode表示操作模式,'r'表示只读、'w'表示重新写、'a'表示接着写。
使用时可创建一个文件对象来装open函数的返回值:
f = open("D:/源代码/New_text.txt", 'r')
使用write函数可往文件里添加字符串,使用方法为:文件对象.write("xxx")
f = open("D:/源代码/New_text.txt", 'w')
f.write("lxy loves lwy.")
f.close()
此时我们打开对应文件可以看到字符串写入成功。如果没有对应的文件,那Python会直接创建一个新文件。
与write函数相同的还有writelines函数,不同点在于writelines并不会换行,需要自行加入转义字符才会换行。
使用read函数可以查看文件中的数据。
f = open("D:/源代码/New_text.txt", 'r+')
print(f.read())
f.close()
与read函数相同的还有readline函数,其不同在于一次只读取一行。
也可以使用for循环打印出来:
f = open("D:/源代码/New_text.txt", 'r+')
for each in f:
print(each)
f.close()
文件操作是通过文件指针一个接一个的读取数据对象实现的,当读取完所有内容时,文件指针指向文件结尾,此时再调用read函数将什么也读不到:
f = open("D:/源代码/New_text.txt", 'r+')
for each in f:
print(each)
print(f.read())
f.close()
# 结果表明f.read语句打印为空
此时我们可以使用tell函数来查看文件指针指向的位置:
f = open("D:/源代码/New_text.txt", 'r+')
for each in f:
print(each)
print(f.tell())
# 打印为14
14表明此时文件指针指向第14个字符的位置,使用seek函数可自定义文件指针指向的位置。
f = open("D:/源代码/New_text.txt", 'r+')
for each in f:
print(each)
print(f.tell())
f.seek(0)
print(f.tell())
重新指向0后,我们可以看到read函数又能读取内容了:
f = open("D:/源代码/New_text.txt", 'r+')
for each in f:
print(each)
f.seek(0)
print(f.read())
每次使用open函数打开文件后,对文件进行的操作其实都保存在文件缓冲区中,只有使用close函数结束文件操作后,对文件进行的操作才能写入文件。close函数可以理解为保存功能。
f = open("D:/源代码/New_text.txt", 'r+')
f.close()
特别注意:每一个open都要有一个对应的close,不然会一直占用内存,后果严重。
若使用with语句,将会自动保存,不需要使用close函数,格式如下:
with open("D:/源代码/New_text.txt", 'r+') as f:
f.write("I love Python!")
使用readable和writable函数可以判断该文件是否可读和是否可写:
with open("D:/源代码/New_text.txt", 'r+') as f:
print(f.readable())
print(f.writable())
# 结果为两个True
'r+'表示可读可写模式
pathlib库中,有判断该文件对象是否为文件或者文件夹的函数,导入方式如下:
import pathlib
f = pathlib.Path("D:/源代码/New_text.txt")
print(f.is_dir())
print(f.is_file())
# 结果为:False True
is_dir函数可以判断该对象是否为文件夹,is_file函数可以判断该对象是否为文件。
更多方法可参考菜鸟教程:Python3 File 方法 | 菜鸟教程 (runoob.com)