在计算机中,文件都以二进制保存在磁盘中
文本文件和二进制文件
文本文件本质上还是二进制文件,但可用文本编辑器查看
二进制文件不能直接查看,要用对应的软件查看
一、文本文件的读取和写入
1.打开文本文件的方法
打开方法 | 说明 |
r | 以只读的方式打开文件。文件指针在文件开头,调用open()时,为选择方法时,默认以只读打开。当文件不存在时,抛出异常 |
w | 以只写的方式打开文件。如果文件存在会被覆盖,如果文件不存在,创建新文件 |
a | 以追加的方式打开文件。如果文件已存在,会在文件的末尾追加内容。如果文件不存在,创建新文件进行写入 |
r+ | 以读写方式打开文件。文件的指针会放在文件开头。文件不存在,抛出异常。 |
w+ | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a+ | 以读写方式打开文件。如果该文件已存在,文件指针会放在结尾,如果文件不存在,创建新文件写入 |
2.读取文本文件
read为文本文件
#打开文件
file = open("read")
#读取文件
#read(),括号里没有数字,默认读取全部
#read(n),最多读取n个字符,返回一个字符串
text = file.read()
print(text)
#关闭文件
file.close()
hello python
hello world
3.分行读取文件
file = open("read")
#无限循环
while True:
# readline()读取一行内容
# readlines()读取剩余行的内容
text = file.readline()
#退出循环地条件(文本指针到最后)
if not text:
break
print(text)
file.close()
hello python
hello world
逐行读取文本文件
4.文件指针
#打开文件
file = open("read")
#读取文件
#第一次读取文件,指针在开头
text = file.read()
print(text)
#分别用len()函数计算读取到的文件长度
print(len(text))
print('*'*50)
#再次读取文件,文件指针已经移动到文件末尾
text = file.read()
print(text)
#指针到末尾,没有数据在进行读取
print(len(text))
#关闭文件
file.close()
第一次读取从开头读取到24个字符,第二次从结尾开始读取,未读取到数据。
5.写入文本文件
#打开文件
#file = open("read","w")
file = open("read","a")
#写入文件
file.write("hello pycharm")
#关闭
file.close()
使用"a"追加地结果
使用"w"覆盖文件
5.文本文件地复制
(1)小文件复制
文件较小,直接逐个复制
#打开两个文件
#read2以只读打开
# read2[小文件复制]以只写打开
file_read = open("read2")
file_write = open("read2[小文件复制]", "w")
#读写操作
text = file_read.read()
file_write.write(text)
#关闭文件
file_write.close()
file_read.close()
(2)大文件复制
文件较大,利用循环逐行输入
#打开两个文件
#read2以只读打开
# read2[大文件复制]以只写打开
file_read = open("read2")
file_write = open("read2[大文件复制]", "w")
#读写操作
while True:
text = file_read.readline()
if not text:
break
file_write.write(text)
#关闭文件
file_write.close()
file_read.close()
二、二进制文件的读取和写入
"rb" 以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常
"wb" 以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件
#以二进制只读方式打开
file_read=open("picture.png",'rb')
#以二进制只写方式打开
file_write=open("picture[复制].png",'wb')
#将二进制只读复制到二进制只写中
file_write.write(file_read.read())
file_write.close()
file_read.close()