文件读写操作:
函数速查:
常用函数 | 功能 |
---|---|
f = open(‘PATH’) | 打开指定路径的文件f 是文件对象。 |
f.read() | 从文件对象中读取文件内容 |
f.readline() | 读取一行内容 |
f.readlines() | 返回一个列表,元素是文件的每一行内容 |
f.write() | 向文件中写入内容 |
f.writelines() | 以列表的方式向文件中写入内容。 |
f.close() | 关闭文件 |
time.sleep() | 沉睡响应的秒数 |
使用open() 函数打开 1.txt 文件,指定只读模式文件(打开冰箱门)
基本语法:
#打开文件
f = open("1.txt")
#查看文件类型
print(type(f))
#打开文件
f = open('E:\Python Code\\1.txt', 'r')
#关闭文件
f.close()
#查看文件是否关闭
print(f.closed)
访问模式 | 操作 | 说明 |
---|---|---|
r (read) | 以读方式打开 | 默认打开文件的方式 文件不存在则报错。 |
w (write) | 以写方式打开 | 文件存在则清空,不存在则创建。 |
a (add) | 以追加模式打开 | 不存在则创建。 存在则追加 |
+ | 以读写模式打开 | 如r+,w+,a+。 |
b | 以二进制模式打开 | 如rb,wb,ab。 |
常用打开文件的参数:
r
w
a
rb
wb
ab
f = open("./pass.dic", "r")
print(f.closed) #False
f.close()
f = open("./pass.dic", "W")
f.close()
说明:
open(“./pass.dic”, “r”) :表示已读的方式打开
f.closed :表示查看文件是否关闭
f.close() :表示关闭文件
open(“./pass.dic”, “W”) :表示以写的方式打开,写完以后记得关闭文件。
read() 方法用来读取文件内容。
f = open("E:\Python Code\\1.txt",'r')
data=f.read()
print(data)
read() 方法有点莽,读取文件中所有内容,此方法慎用。
read() 方法比较适合读取二进制文件,包括exe 程序,图片等文件,不适合读取纯文本文件。
\n 表示换行(也可以\n\r)
读取打开文件的一行(读取下个行结束符之前的所有字节),包括行结束符,作为字符串返回。它也有一个可选的size 参数,默认为-1,代表读至行结束符,如果提供了该参数,那么在超过size 个字节后会返回不完整的行。
该函数每执行一次,向下读取一行。
f = open("E:\Python Code\\1.txt",'r')
print(f.readline()) #输出第一行,此时文件指针指向第二行开头
print(f.readline())
除去中间的空行,使用strip
函数,默认去除头尾的空格或者换行符:
f = open("E:\Python Code\\1.txt",'r')
print((f.readline()).strip())
print((f.readline()).strip())
readlines() 方法读取所有(剩余的)行,然后把它们作为一个元素是字符串的列表返回。
f = open("E:\Python Code\\1.txt",'r')
print(f.readlines()) #从头开始,返回一个字符串列表
print("---------------------") #为了直观一点
print(f.readline()) #因为文件指针已经指向了文件末尾,所以会输出空
print("---------------------") #为了直观一点
f.seek(0,0) #此时就需要使用seek函数来重新设置文件读取指针的位置
print(f.readline()) #再次输出
f.close()
说明:
seek(0,0) 重新设置文件读取指针到开头
如果需要逐行处理文件,可以结合for 循环迭代(遍历)文件。迭代文件的方法与处理其他序列类型的数据类似。
# 12 - 文件迭代
f = open(file = "E:\Python Code\\1.txt", mode = "r")
for i in f: # f 也可换成 f.readlines()
print(i.strip())
f.close()
有可能遇到的问题:
# 13 - 文件迭代的改进方法.py
with open(file = "E:\Python Code\\1.txt", mode = "r") as f:
for line in f:
print(line.strip())
使用该关键字可以让python去确定,我们在不需要访问文件的时候自动关闭文件。也就是说我们只需要打开和操纵文件,python会在合适的机会关闭文件。即使在文件打开过程中,遇到异常无法关闭文件的情况下,也能自动关闭文件。
write() 内建方法功能与read() 和readline() 相反。它把含有文本数据或二进制数据块的字符串写入到文件中去。写入文件时,不会自动添加行结束标志,需要程序员手工输入。
f = open('E:\Python Code\\1.txt', 'a') #打开文件方式为追加
f.write('g_h_i\n') #追加写入
f.close() #关闭
f = open('E:\Python Code\\1.txt', 'a')
f.write("zhangsan\n")
f.close()
f = open('E:\Python Code\\1.txt', 'r') #打开文件方式为读取
print(f.readlines()) #以文件列表的形式输出
f.close()
和readlines() 一样,writelines() 方法是针对列表的操作,它接受一个字符串列表作为参数,将它们写入文件,行结束符并不会被自动加入,所以如果需要的话,必须在调用writelines() 前给每行结尾加上行结束符。
>>> password_list=
['venustech\n', 'nsfocus\n', 'topsec\n', 'dbappsecrutiy\n', 'knownsec\n', 'colasoft\n', 'sangfor\n', 'qianxin\n', 'chaitin\n', 'sbr-info\n']
>>> f = open('sec.dic', 'a')
>>> f.writelines(password_list)
>>> f.close()
adlines()) #以文件列表的形式输出
f.close()