- 打开文件
- 读/写数据
- 关闭文件
打开文件(open)
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
f = open('filename', 'r') # 读模式
f = open('filename', 'w') # 写模式
f = open('filename', 'a') # 追加模式
模式说明
访问模式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
读取文件内容(read)
使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
- 直接读取文件
file1 = open("test.txt")
file2 = open("output.txt","w")
while True:
line = file1.readline()
#这里可以进行逻辑处理
file2.write('"'+line[:s]+'"'+",")
if not line:
break
#记住文件处理完,关闭是个好习惯
file1.close()
file2.close()
读文件有3种方法:
- read()将文本文件所有行读到一个字符串中。
- readline()是一行一行的读,占内存小,速度慢。
- readlines()是将文本文件中所有行读到一个list中,文本文件每一行是list的一个元素。 优点:readline()可以在读行过程中跳过特定行。
2.使用for循环读取文件
file2 = open("output.txt","w")
for line in open("test.txt"):
#这里可以进行逻辑处理
file2.write('"'+line[:s]+'"'+",")
- 使用文件上下文管理器
#打开文件
#用with..open自带关闭文本的功能
with open('somefile.txt', 'r') as f:
data = f.read()
# loop整个文档
with open('somefile.txt', 'r') as f:
for line in f:
# 处理每一行
# 写入文本
with open('somefile.txt', 'w') as f:
f.write(text1)
f.write(text2)
...
# 把要打印的line写入文件中
with open('somefile.txt', 'w') as f:
print(line1, file=f)
print(line2, file=f)
- 二进制文件读取
Python默认读取的都是文本文件。要是想要读取二进制文件,需要把刚刚的'r'改成'rb'。
f = open('image.jpg', 'rb')
print(f.read())
# 输出 '\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节
写入数据到文件(write)
使用write()可以完成向文件写入数据。
f = open('test.txt', 'w')
f.write('hello world!')
f.close()
如果文件不存在那么创建,如果存在那么就先清空,然后写入数据。
关闭文件(close)
# 新建一个文件,文件名为:test.txt
f = open('test.txt', 'w')
# 关闭这个文件
f.close()