目录
一、打开文件
open() 函数:打开文件并创建文件
在打开文件之前,需要了解要对文件做什么?
- 只查看文件中有什么,而不做任何改变,——打开文件完成读操作;
my_file = open('notes.txt', 'r')
- 创建一个全新的文件或者用某个全新的文件替换现有的文件,——打开文件完成写操作;
the_file = open('notes.txt', 'w')
- 为一个现有文件增加内容,就是要打开文件完成追加操作
ll_file = open('oo.txt', 'a')
二、读文件
my_file = open('notes.txt', 'r')
注意:如果打开一个文件完成读,但是这个文件根本不存在,就会得到一条错误消息。
来提示文件并不存在
①、使用 readlines() 方法
readlines():从一个文件读取文件的所有行
my_file = open('notes.txt', 'r')
lines = my_file.readlines()
print(my_file)
print(lines)
②、readline()
readline() :一次只读取一行
my_file = open('notes.txt', 'r')
first_line = my_file.readline()
print("first_line = ", first_line)
se_line = my_file.readline()
print("se_line = ", se_line)
my_file.close()
③、回到起始点
如果已经使用了readlines所有行,又想查看几次 readline(),要退回到文件的起始位置,否则,输出的是所有行后面的文本——可以使用seek() 方法
my_file = open('notes.txt', 'r')
lines = my_file.readlines()
print(my_file)
print(lines)
my_file.seek(0)
first_line = my_file.readline()
print("first_line = ", first_line)
se_line = my_file.readline()
print("se_line = ", se_line)
my_file.close()
三、文本文件和二进制文件
-
文本文件:这些文件包含了文本,包括字母、数字、标点符号和一些特殊字 符,如换行符。
-
二进制文件:这些文件不包含文本,它们可能包含音乐、图片或其他类型的数据。不过由于不包含文本,所以这些文件中也没有行,因为根本不存在换行符。
处理方式:为文件模式增加一个 b 来打开二进制文件
打开一个wav格式音乐
mu_file = open('hit_wall.wav', 'rb')
print(mu_file)
li = mu_file.readlines()
print(li)
mu_file.close()
四、写文件
写文件分为2种情况:
- 写 ——— 这表示开始新文件,或者覆盖现有的文件。
- 追加 ———这表示增加到现有的文件,保留原来已有的内容。
- 也可以使用print()写文件
🍖 'w' 表示写模式:
- 如果文件已经存在,文件中的所有内容都会丢失,替换为现在写入的内容;
- 如果文件不存在,会创建一个同名的新文件,写的所有内容会被放入这个新文件中。
文件已经存在:
w_file = open('qq.txt', 'w')
w_file.write("eat supper\n")
w_file.write('play soccer\n')
w_file.write("go to bed")
w_file.close()
文件不存在:
the_file = open('notes.txt', 'w')
the_file.write("wake up\n")
the_file.close()
🍗 'a' 表示追加模式:
- 如果文件已经存在,写入的内容,会加到该文件中的末尾;
- 注意:追加的必须是硬盘上某个已经存在的文件名字。
- 注意:写完文件一定要关闭,因为只有使用 close() 关闭文件,添加的内容才会真正保存到文件中
ll_file = open('oo.txt', 'a')
ll_file.write('\nSend allowed\njjjj')
ll_file.close()
🥩使用 print 写文件
my_file = open("new_file.txt", 'w')
print('hello,there', file = my_file)
my_file.close()
my_file = open("new_file.txt", 'w') print >> my_file, "Hello there" my_file.close()
这里的两个 > 符号(有时称为山形符号)告诉 print 要把它的输出发送到一个文件中而不是屏幕上。这称为重定向(redirecting)输出。
提示: >> 的print输出仅在python2,版本中使用,在python3版本使用会报错!!!!
在python3需要修改为:
print(<message>, file=<output_stream>) //改为此格式
五、在文件中保存内容:pickle
python 模块——pickle:用来存储列表和对象
写入:
import pickle #需要添加模块
my_list = ['red', 78, 'hello therer', 81.369e-13]
pickle_file = open('my_pickled_list.pkl','wb')
pickle.dump(my_list, pickle_file)
pickle_file.close()
注意:此处写入要加 ‘b’ 模式,否则会报错
还原:
load()函数:会按原来的格式返回数据
pickle_file = open('my_pickled_list.pkl','rb')
recove_list = pickle.load(pickle_file)
print(recove_list)
pickle_file.close()
注意
处理完文件时,一定要关闭文件,倘若另一个程序需要使用这个文件,而程序又还没有将它关闭,那个程序就无法访问这个文件。使用完文件后 就关闭它,这样通常会比较好。