文件对象
文件对象
\:转意字符
\r:回车
\n:换行符号
\t:tap键
python读取和写入文件内容
Python-读取
open 打开文件
open:创建/打开文件
格式:
open("路径",mode="模式",encoding="字符集")
读取文件
f = open("满江红",mode="rb") #r:读字符 rb:读字节
写入文件
f = open("满江红",mode="w") #w:写字符,rb:写字节
要统一文件编码格式。否则会乱码
read() 读取
read():读取,默认读取全部
文件.read(5) #取光标后5个字节
seek:调整光标位置,指针归零
格式:文件.seek(x.y) #将光标放置最前位
x:偏移量
y:光标起始位置
readline():按行读取
格式:文件.readline()
readlines():通过列表显示多行
close():关闭文件,释放文件占用内存空间
格式:文件.close()
read()读取示例
//读取文件内容,以字符的形式
f = open("c:\\users\\86153\\test.txt","r")
r:读取的意思
//读取所有文件
>>> f.read() #读取文件内容
'I im is liguo\nyou is bob'
//按行读取内容
>>> f.seek(0.0) #指针归零
0.0
>>> f.readline() #按行读取,会根据指针的变化去去移动
'I im is liguo\n'
>>> f.readline()
'you is bob'
//以列表形式列出输出所有内容
>>> f.seek(0.0)
0.0
>>> f.readlines()
['I im is liguo\n', 'you is bob']
//读取文件前5个字节的内容
>>> f.seek(0.0)
0.0
>>> f.read(5)
'I im '
with 读取文件内容
格式:
with open("满江红","rb") as f:
满江红:文件名称
rb:字节,r:字符
f:文件句柄
示例
with open("满江红","rb") as f:
print(f.read())

好处:不需要close()关闭文件,read()需要close()关闭文件
seek() 和tell()
使用 open() 函数打开文件并读取文件中的内容时,总是会从文件的第一个字符(字节)开始读起。那么,有没有办法可以自定指定读取的起始位置呢?答案是肯定,这就需要移动文件指针的位置。
文件指针用于标明文件读写的起始位置。假如把文件看成一个水流,文件中每个数据(以 b 模式打开,每个数据就是一个字节;以普通模式打开,每个数据就是一个字符)就相当于一个水滴,而文件指针就标明了文件将要从文件的哪个位置开始读起
注意,当向文件中写入数据时,如果不是文件的尾部,写入位置的原有数据不会自行向后移动,新写入的数据会将文件中处于该位置的数据直接覆盖掉。
实现对文件指针的移动,文件对象提供了 tell() 函数和 seek() 函数。tell() 函数用于判断文件指针当前所处的位置,而 seek() 函数用于移动文件指针到文件的指定位置。
tell()显示指针位置
格式:
file.tell()
其中,file 表示文件对象。
#原文:
江满红
叶落江河星满天
#显示当前位置指针所在的字节的位置
with open("满江红",mode="rb") as f:
print(f.readline()) #按行读取,需要缩进
print(f.tell())

seek() 调整指针位置
格式:
file.seek(offset[, whence])
file:表示文件对象
whence:作为可选参数,用于指定文件要放置的位置,该参数有三个选择,0代表文件头(默认值),1代表当前值,2代表文件尾
offist:表示相对于whence位置文件指针的偏移量,正数表示向后偏移,负数表示向前偏移。
#seek() 函数用于将文件指针移动至指定位置
tell()和seek()示例
f = open("满江红",mode="rb") #打开文件
print(f.tell()) #打印指针位置
print(f.read()) #读取全部文件内容
print(f.tell()) #打印指针位置
f.seek(3,0) #调整指针位置
print(f.tell()) #3
print(f.read()) #打印文件内容

注意,当 offset 值非 0 时,Python 要求文件必须要以二进制格式打开,否则会抛出 io.UnsupportedOperation 错误。
close() 关闭文件,释放内容空间
f.close()
f:文件对象
在写入文件完成后,一定要调用 close() 函数将打开的文件关闭,否则写入的内容不会保存到文件中。例如,将上面程序中最后一行f.close() 删掉,再次运行此程序并打开 a.txt,你会发现该文件是空的。这是因为,当我们在写入文件内容时,操作系统不会立刻把数据写入磁盘,而是先缓存起来,只有调用 close() 函数时,操作系统才会保证把没有写入的数据全部写入磁盘文件中。
write()写入
Python中的文件对象提供了 write() 函数,可以向文件中写入指定内容。该函数的语法格式
file.write(string)
file 表示已经打开的文件对象
string 表示要写入文件的字符串(或字节串,仅适用写入二进制文件中)
注意,在使用 write() 向文件中写入数据,需保证使用 open() 函数是以 r+、w、w+、a 或 a+ 的模式打开文件,否则执行 write() 函数会抛出io.UnsupportedOperation 错误。
属性
write(""):写入
writeline(""):按照行写入
writelines([""]):按照列表写入文件
close():关闭文件
在用户家目录建立名为testone.txt的文件写入3行内容
#写入内容
one
tow
tree
---------------
//创建文件夹
f = open("C:\\Users\\testone.txt","wb")
w:保存文件
b:以二进制的形式保存
f.writelines([b"one\r\n",b"tow\r\n",b"three\r\n"])
实现拷贝文件内容
//拷贝小文件
#打开文件
rf = open("C:\\Users\\86153\\test.txt","rb")
df = open("C:\\Users\\86153\\one.txt","wb")
#赋值
data = rf.read()
df.write(data)
#关闭文件
rf.close()
df.close()
-----------------------------
//拷贝大文件
#打开文件
rf = open("C:\\Windows\\System32\\cmd.exe","rb")
df = open("C:\\Users\\86153\\two.exe","wb")
#赋值文件
while True:
data = rf.read(4095)
if data == b"":
break
df.write(data)
#关闭文件
rf.close()
df.close()
浙公网安备 33010602011771号