文档的高级处理

摘要:一、文档的开启方式归类几大类1、操纵文档读写能力实际操作的方式1.1 r:写保护(不特定方式下默认设置的方式):在文档不会有时则出错,文档存有时文档指针跳至文档开始f=open('m.t...

一、文档的开启方式归类几大类
1、操纵文档读写能力实际操作的方式
1.1 r:写保护(不特定方式下默认设置的方式):在文档不会有时则出错,文档存有时文档指针跳至文档开始
f=open('m.txt',mode='rt',encoding='utf-8')
# res = f.read()
print(f.readable())#True
print(f.writable())#False
f.close()
1.2 w:只写:在文档不会有时则建立空文档,文档存有时则清除,文档指针跳至文档开始
f=open('b.txt',mode='wt',encoding='utf-8')
f.write("您好啊嘿嘿哈\n")
f.write("hello1\n")
f.write("hello2\n")
f.close()
1.3 a:只追加写:在文档不会有时则建立空文档,文档存有时都不会清除,文档指针跳至文档结尾
f=open('c.txt',mode='at',encoding='utf-8')
f.write("jason:777\n")#会换行
f.write("jjj:666\n")
f.close()
小结:w与a的不同点
同样点:在开启了文档不关掉的状况下,持续地载入,新的內容始终跟在老內容以后
不一样点:再次开启文档,w会清除老的內容,而a方式会保存老的內容而且指针跳至文档结尾

示范性1:申请注册作用
# 示范性1:申请注册作用
name = input("your name: ").strip()
# 做合理合法性校检:
# 1、假如键入的客户名包括独特标识符^$ ...让客户再次键入
# 2、假如键入的客户名早已存有也再次键入
pwd = input("your password: ").strip()
# 做合理合法性校检:
# 1、登陆密码长短
# 2、假如登陆密码包括独特标识符则再次键入
f = open('user.txt',mode='at',encoding='utf-8')
f.write('%s:%s\n' %(name,pwd))
f.close()
示范性2:登陆作用
# 示范性2:登陆作用
inp_name = input("your name: ").strip()
inp_pwd = input("your pwd: ").strip()
f = open('user.txt',mode='rt',encoding='utf-8')
for line in f:
 user,pwd=line.strip('\n').split(':')#缓解压力取值
 if inp_name == user and inp_pwd == pwd:
 print('essful')
 break
else:
 print('user or password error')
f.close()
# 升級要求1:同一个账户按错三次则撤出
# 升級要求2:同一个账户按错三次则,该账户则锁住10秒,就算程序被停止,依然记时

2、操纵文档读写能力內容的方式
1.1 t(不在特定的状况下默认设置的方式):读写能力全是以str标识符串为企业,一定要特定encoding
f=open('a.txt',mode='rt',encoding='utf-8')
f.read()
f.close()
1.2 b:读写能力全是以bytes为企业,一定不可以特定encoding主要参数
#r
f=open('m.txt',mode='rb')
data=f.read()
print(data,type(data))#b'hello\r\n\xe4\xbd\xa0\xe5\xa5\xbd\r\n123\r\n\r\n' class 'bytes' 
print(data.decode('utf-8'))#b方式要编解码
f.close()
f=open('m.txt',mode='wb')
f.write("egon".encode('utf-8'))
f.close()
3、 左右文管理方法with

with open(...) as f,open(...) as f1:
f.read()

4、实例:撰写文档复制程序

src_file=input("源代码相对路径:").strip()
dst_file=input("总体目标文档相对路径:").strip()
with open(r'%s' %src_file,mode='rb') as src_fobj,open(r'%s' %dst_file,mode='wb') as dst_fobj:
 # data=src_fobj.read()
 for line in src_fobj: # line=第二内行人容
 dst_fobj.write(line)

5、填补方式

rwa
tb务必和rwa联用
+务必与rwa联用:r+、w+、a+ (r+、w+、a+ 他们都可以读可写)
有:
r+t
w+t
a+t
r+b
w+b
a+b

不特定方式,那麼默认设置的是rt
with open('a.txt') as f:#默认设置rt方式
pass

with open('a.txt',mode='w+') as f:#默认设置wt方式
pass

二、操纵文档实际操作的别的方式
1、读有关方式
readline() :读一行,念完一行以后,鼠标光标会转到下一行行首,\n占有两个标识符
readlines():非常于内嵌了for循环系统,一行一行读取来
with open('a.txt',mode='rt',encoding='utf-8') as f:
 line1=f.readline()
 line2=f.readline()
 line3=f.readline()
 print(line1)
 print(line2)
 print(line3)
 lines=[]
 for line in f:
 lines.append(line)
 lines=f.readlines()#for循环系统缩写因此行
 print(lines)

2、写有关方式

with open('b.txt',mode='wt',encoding='utf-8') as f:
 lines=['111\n','222\n','333\n']
 for line in lines:
 f.write(line)
 # f.writelines(lines)#for循环系统缩写成此番
 f.writelines("hello")

3、别的

f.flush()#即时更新

with open(r'a.txt',mode='wt',encoding='utf-8') as f:
 print(f.name) # 取的是开启文档的相对路径 a.txt
 print(f.closed)#False
 for i in range(100):
 f.write("%s\n" %i)
 f.flush()#即时更新

三、操纵文档指针的移动

1、操纵文档内指针的移动全是以字节数为企业
仅有一种独特状况,t方式下的read(n),意味着的是n字符,另外意味着的统统是字节数
with open('f.txt',mode='rt',encoding='utf-8') as f:
 data=f.read(6) # 6字符
 print(data)
with open('f.txt',mode='rb') as f:
 # data=f.read(6) # 6个字节数
 data=f.read(8) # 八个字节数
 print(data.decode('utf-8'))

   2、f.seek(n,方式) # n意味着的移动的字节数数量

方式:
0方式:参考文档的开始刚开始移动(仅有0方式能够在t下应用,1和2方式只有在b下应用)
ps: f.tell():告知鼠标光标如今所属的部位
with open('f.txt',mode='rt',encoding='utf-8') as f:
 f.seek(5,0)
 print(f.tell())
 print(f.read())
 print(f.tell())
 print('='*100)
 f.seek(0,0)
 print(f.read())
1方式:参考指针当今所属的部位
with open('f.txt',mode='rb') as f:
 f.seek(3,1)
 f.seek(3,1)
 print(f.tell())
 # f.seek(2,1)
 f.seek(5,0)
 print(f.read().decode('utf-8'))
2方式:参考文档结尾的部位
with open('f.txt',mode='rb') as f:
 f.seek(0,2)
 f.seek(-3,2)
 # print(f.tell())
 print(f.read().decode('utf-8'))

3、实例:仿真模拟程序纪录系统日志的作用

import time
for i in range(10000):
 with open('access.log',mode='at',encoding='utf-8') as f:
 t=time.strftime("%Y-%m-%d %H:%M:%S")
 content="egon给刘教师转了%s个亿" %i
 msg=f"{t} {content}\n"
 f.write(msg)
 time.sleep(3)

#time控制模块详细介绍

import time
time.strftime("%Y-%m-%d %H:%M:%S")
time.sleep(n) #n意味着几秒钟
4、载入系统日志程序
#载入系统日志程序
import time
with open('access.log', mode='rb') as f:
 f.seek(0, 2)
 while True:
 line = f.readline()
 if len(line) == 0:
 # 沒有读到內容
 time.sleep(0.5)
 else:
 print(line.decode('utf-8'), end='')
5、掌握truncate()
f.truncate(n)文本文件开始往后面数n个字节数保存出来,其他所有删掉
f.truncate()文本文件开始往后面数指针当今所属的部位,其他所有删掉
with open('f.txt',mode='ab') as f:
 # f.truncate(3)
 # f.seek(-3,2)
 f.truncate()

 



联系我们

全国服务热线:4000-399-000 公司邮箱:343111187@qq.com

  工作日 9:00-18:00

关注我们

官网公众号

官网公众号

Copyright?2020 广州凡科互联网科技股份有限公司 版权所有 粤ICP备10235580号 客服热线 18720358503

技术支持:微信预约小程序