python基础——file操作

读取文件

在py文件的当前目录,创建如下文件“小重山”

data =open('小重山','r',encoding= 'utf8').read()  #读取文件
print(data)            # r为读,read为方法结果:
昨夜,寒秋蟋蟀不住哀鸣,
梦回故乡,千里燃战火,
被惊醒,已三更。站起身,
独绕台阶踽踽行。四周静悄悄,
帘外,一轮淡月正朦胧。
为国建功留青史,未老满头霜星星。
家山松竹苍然老,无奈议和声起、阻断了归程。
想把满腹心事,付与瑶琴弹一曲。
可高山流水知音稀,纵然弦弹断,又有谁来听f = open('小重山','r',encoding= 'utf8')   #读取文件
data =f.read(5)         # 读取5个字符
print(data)
f.close()           # 读完后养成习惯,关闭文件结果:
昨夜,寒秋f = open('小重山','r',encoding= 'utf8')
print(f.readline())     # file.readline([size])读取整行,包括 "\n" 字符。
print(f.readline())
f.close()结果:
昨夜,寒秋蟋蟀不住哀鸣,梦回故乡,千里燃战火,f = open('小重山','r',encoding= 'utf8')
print(f.readlines())    # file.readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
for i in f.readlines():print(i.strip())结果:
['昨夜,寒秋蟋蟀不住哀鸣,\n', '梦回故乡,千里燃战火,\n', '被惊醒,已三更。站起身,\n', '独绕台阶踽踽行。四周静悄悄,\n', '帘外,一轮淡月正朦胧。\n', '为国建功留青史,未老满头霜星星。\n', '家山松竹苍然老,无奈议和声起、阻断了归程。\n', '想把满腹心事,付与瑶琴弹一曲。\n', '可高山流水知音稀,纵然弦弹断,又有谁来听hello world \n', 'add']

格式化写文件

创建如下文件"小重山2"

f = open('小重山2','w',encoding= 'utf8')   #格式化写文件
f.write('hello world \n')     # \n 为换行;w 为写,write为方法
f.write('joy')
f.close()文件结果如下:(注:不是打印结果)
hello world            # 会将之前的内容清空,重新写入
joy

追加

a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

import time
f = open('小重山','a',encoding= 'utf8')   #写文件。使用a语法进行追加
f.write('hello world \n')
f.write('add joy')
time.sleep(20)
f.close()结果:
昨夜,寒秋蟋蟀不住哀鸣,
梦回故乡,千里燃战火,
被惊醒,已三更。站起身,
独绕台阶踽踽行。四周静悄悄,
帘外,一轮淡月正朦胧。
为国建功留青史,未老满头霜星星。
家山松竹苍然老,无奈议和声起、阻断了归程。
想把满腹心事,付与瑶琴弹一曲。
可高山流水知音稀,纵然弦弹断,又有谁来听hello world 
add                                         #hello world add 为追加写入

在指定行中添加内容

number = 0
f = open('小重山','r',encoding= 'utf8')
for i in f.readlines():number +=1if number == 6:    # 在第6行中添加内容#     print(i.strip(),'zizyg')# else:#     print(i.strip())i = ''.join([i.strip(),'aaaa'])print(i.strip())结果:
昨夜,寒秋蟋蟀不住哀鸣,
梦回故乡,千里燃战火,
被惊醒,已三更。站起身,
独绕台阶踽踽行。四周静悄悄,
帘外,一轮淡月正朦胧。
为国建功留青史,未老满头霜星星。aaaa     #r只是读取文件,aaaa字符不会存入到文件中
家山松竹苍然老,无奈议和声起、阻断了归程。
想把满腹心事,付与瑶琴弹一曲。
可高山流水知音稀,纵然弦弹断,又有谁来听hello world
add#使用迭代器方式,结果同上
f = open('小重山','r',encoding= 'utf8')
number = 0
for i in f:                             # for内部将f对象做成迭代器,用一行取一行number += 1if number == 6:i = ''.join([i.strip(),'aaaa'])print(i.strip())

查看光标位置、设置光标位置

print(f.tell())             
print(f.read(2))
print(f.tell())             # 读光标位置
f.seek(0)                   # 设置光标位置
print(f.read(4))结果:
0
昨夜
6                #一个中文字符占6个位置,所以是6
昨夜,寒

将文件写入磁盘

file.write(str)

将字符串写入文件,返回的是写入的字符长度。

xie = open('存储','w',encoding= 'utf8')
xie.write('sjanglkllgm 77')
xie.flush()                     # 将数据存储到磁盘
import sys,time
for i in range(100):# print('*',end='',flush=True)sys.stdout.write('*')        #使用*号代替进度条sys.stdout.flush()time.sleep(0.01)    #打印*号间隔时长结果:
会创建一个名称为“存储”的文件,同时写入一下内容
sjanglkllgm 77
打印*号100个

清除、判断是否为终端

x =open('小重山','a',encoding= 'utf8')
x.truncate(20)                        # 清除后剩下20个字符
x.close()结果:
清除说有文字,留下20个字符
昨夜,寒秋蟋蟀不住哀x =open('小重山','a',encoding= 'utf8')
print(f.isatty())                   # 判断是否为终端结果:
Flase

读与写

(r+打开一个文件用于读写。文件指针将会放在文件的开头。)

# r+模式
b = open('小重山','r+',encoding = 'utf8')
print(b.readline())
b.write('读与写')    
b.close()结果:
昨夜,寒秋蟋蟀不住哀鸣,   # 只会读取第一行内容,如需要读取全部,使用迭代器
在最后一行结尾会写入‘读与写’,文件内容如下:
昨夜,寒秋蟋蟀不住哀鸣,
梦回故乡,千里燃战火,
被惊醒,已三更。站起身,
独绕台阶踽踽行。四周静悄悄,
帘外,一轮淡月正朦胧。读与写

w+模式

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

#w+模式
b = open('小重山','w+',encoding = 'utf8')     # 执行时会清空所有内容
print(b.readline())           # 执行后结果为空行
b.write('写模式')
print(b.tell())             #返回文件位置
b.seek(0)               #将光标调整位置,如注释此条,打印为空
print(b.readline())
b.close()结果:# 执行时被清空,所以这个会有一个空行
9
写模式

a+模式

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

b = open('小重山','a+',encoding = 'utf8')
print(b.tell())
b.write('写模式')
print(b.tell())
#b.seek(0)
print(b.readline())
b.close()结果:
188
197            #文件光标位置
在文件尾部写入‘写模式’如下:
昨夜,寒秋蟋蟀不住哀鸣,
梦回故乡,千里燃战火,
被惊醒,已三更。站起身,
独绕台阶踽踽行。四周静悄悄,
帘外,一轮淡月正朦胧。写模式

重写文件

#创建‘小重山3’的文件,将‘小重山’的内容写入到‘小重山3’的文件中
g = open('小重山', 'r', encoding='utf8')
h = open('小重山3', 'w', encoding='utf8')
number=0
for line in g:number+=1if number ==3:line=''.join([line.strip(),'尾部添加\n'])# line = '测试重写模式\n'h.write(line)
f.close()结果:
写入的文件内容如下:
昨夜,寒秋蟋蟀不住哀鸣,
梦回故乡,千里燃战火,
被惊醒,已三更。站起身,尾部添加
独绕台阶踽踽行。四周静悄悄,
帘外,一轮淡月正朦胧。另一种写法
ith 同时管理多个文件对象
with open('小重山','r',encoding='utf8') as f,open('小重山3','w',encoding='utf8') as g: # 程序跑完缩进里面的内容自动closefor line in f:g.write(line)结果:
同上,尾部没有添加内容


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部