文件对象

文件对象

\:转意字符
\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()

posted @ 2024-10-28 17:39  帅帅啊  阅读(23)  评论(0)    收藏  举报