【python | linux06】python中文件的开关及读写定位

151 阅读2分钟

​ 携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!

1.文件操作介绍

1.1文件作用

就是把一些数据存放起来,可以让程序下一次执行的时候直接使用,加载到内存中,而不必重新制作一份,省时省力

1.2打开文件open

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件open(文件名,访问模式)
示例如下:  f = open( 'test.txt', 'w')w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在会崩溃。Read
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。Write
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。如果文件不存在会崩溃 read binary
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。如果文件不存在会崩溃
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。如果文件不存在会崩溃。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写

2.文件的开关及读写

2.1文件的读写:

2.1.1写数据(write):

使用write()可以完成向文件写入数据:f.write(hello world!\n)

2.1.2读数据(read):

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度( 单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。f.read()

2.1.3读数据(readlines):

就像read没有参数时一样,readlines 可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素.

2.2举例

f = open("text.txt","w",encoding="utf-8")
f.write("hello  大家好!")
f.close()
f = open("text.txt","r",encoding="utf-8")
print(f.read())
f.close()      # 关闭这个文件

需求描述:2.2.1练一练1

输入文件的名字,然后程序自动完成对文件进行拷贝例如,程序运行后提示“请输入你要拷贝的文件名:”,当你输入“test.txt”的时候,会把“test.txt”文件的内容复制一份到文件名叫“[复制]-test.txt”文件中。
#打开要复制的文件
oldFileName = input("请输入您要复制的文件名:")
oldFile = open(oldFileName,"r",encoding="utf-8")

#创建一个新文件用于保存要复制的内容
newFileName = "[复制]-"+oldFileName
newFile = open(newFileName,"w",encoding="utf-8")

#读取要复制的文件,并写入到新文件中
newFile.write(oldFile.read())

#关闭两个文件
oldFile.close()
newFile.close()

2.2.2练一练2

需求描述:输入文件的名字,然后程序自动完成对文件进行拷贝例如,程序运行后提示“请输入你要拷贝的文件名:”,当你输入“test.txt”的时候,会把“test.txt”文件的内容复制一份到文件名叫“test[复制].txt”文件中。
#打开要复制的文件
oldFileName = input("请输入您要复制的文件名:")
oldFile = open(oldFileName,"r",encoding="utf-8")

#用于分割文件名
#1.得到.的位置
position = oldFileName.rfind(".")

#2.得到.之前的部分
pre = oldFileName[:position]

#3.得到.之后的部分,包含点
sux = oldFileName[position:]

#4.拼接一个新的名字
newFileName = pre+"[复制]"+sux

#创建一个新文件用于保存要复制的内容
newFile = open(newFileName,"w",encoding="utf-8")

#读取要复制的文件,并写入到新文件中
newFile.write(oldFile.read())

#关闭两个文件
oldFile.close()
newFile.close()

 支持超大文件的复制支持超大文件的复制

2.2.3练一练3

需求描述:输入文件的名字,然后程序自动完成对文件进行拷贝例如,程序运行后提示“请输入你要拷贝的文件名:”,当你输入“test.txt”的时候,会把“test.txt”文件的内容复制一份到文件名叫“test[复制].txt”文件中
#打开要复制的文件
oldFileName = input("请输入您要复制的文件名:")
oldFile = open(oldFileName,"r",encoding="utf-8")

#用于分割文件名
#1.得到.的位置
position = oldFileName.rfind(".")

#2.得到.之前的部分
pre = oldFileName[:position]

#3.得到.之后的部分,包含点
sux = oldFileName[position:]

#4.拼接一个新的名字
newFileName = pre+"[复制]"+sux

#创建一个新文件用于保存要复制的内容
newFile = open(newFileName,"w",encoding="utf-8")

#读取要复制的文件,并写入到新文件中
#增加支持大文件复制
while True:
readContent = oldFile.read(1024)
if len(readContent) == 0:
break
newFile.write(readContent)

#关闭两个文件
oldFile.close()
newFile.close()

2.3文件读写定位

获取当前读写的位置 tell在读写文件的过程中,如果想知道当前的位置,可以使用 tell()来获取置 定位到某个位置 seek使用 seek()seek(offset, from)有 2 个参数offset:偏移量from:方向0:表示文件开头 1:表示当前位置 2:表示文件末尾

2.3.1python2 中的 seek

定位到文件开头:seek(0,0),seek(正数,0) ;不支持 seek(负数,0)定位到当前位置:seek(0,1),seek(正数,1) ,(负数,1)定位到文件末尾:seek(0,2),seek(正数,2) ,(负数,2)

2.3.2python3 中的 seek

Python3 中的 seek:定位到文件开头:seek(0,0),seek(正数,0) ;不支持 seek(负数,0)定位到当前位置:seek(0,1) ;不支持 seek(正数,1),(负数,1)定位到文件末尾:seek(0,2) ;不支持 seek(正数,2),(负数,2)
f = open("test.txt","r",encoding="utf-8")str = f.read(3)print("读取的数据是:",str)#查找当前位置position = f.tell()print("当前文件位置:",position)#重新设立位置f.seek(8,0)#查找当前位置position = f.tell()print("当前文件位置:",position)f.close()

👑👑👑结束语👑👑👑