1,文件操作
1.1:文件操作
# 文件操作
'''
python学习.pdf
1,文件路径: d:python学习.pdf
2,编码方式: gbk,ascii,utf-8
3,操作方式:只读,只写,追加,读写,写读
文件以什么编码储存的,就要用什么编码方式打开
如果报错,看下是否隐藏文件的扩展名等问题
open,mode中只要有b ,后面就不要有编码方式
'''
# f = open('E:python学习.txt',mode='r',encoding='utf-8') # 电脑中的觉对路径
# content = f.read()
# print(content)
# f.close()
# 只读 r
# f = open('python学习本地路径',mode='r',encoding='utf-8') # 相对路径
# content = f.read()
# print(content)
# f.close()
# 只读 rb 用二进制打开,后面不要加编码方式,要不会报错
# f = open('python学习本地路径',mode='rb')
# content = f.read()
# print(content,type(content)) # b'xe6x9cxacxe5x9cxb0xe8xb7xafxe5x8axb2' <class 'bytes'>
# f.close()
# 只写 w 没有此文件就创建文件
# f = open('python学习本地路径02',mode='w',encoding='utf-8')
# f.write('只写')
# f.close()
# 只写 w 如果有原文件,就把原文件内容删除,在写进去
# f = open('python学习本地路径02',mode='w',encoding='utf-8')
# f.write('你好')
# f.close()
# 只写 wb
# f = open('python学习本地路径02',mode='wb') # 后面不要编码方式,不然会报错
# f.write('只写'.encode('utf-8')) # 后面一定要编码,要不然会报错,如果用gbk方式写,pycharm默然是utf-8,文件打开会乱码。
# f.close()
# 追加 a
# f = open('python学习本地路径02',mode='a',encoding='utf-8')
# f.write('baozi')
# f.close()
# 追加 ab
# f = open('python学习本地路径02',mode='ab')
# f.write('jason'.encode('utf-8'))
# f.close()
# 追加 a+
# f = open('python学习本地路径02',mode='a+',encoding='utf-8')
# f.write('baozi')
# f.seek(0)
# print(f.read()) # 如果只是a,会报错,没有读的功能
# f.close()
# 读写 r+ 先读再写
# f = open('python学习本地路径02',mode='r+',encoding='utf-8')
# print(f.read())
# f.write("python9")
# f.close()
# 读写 r+ 先写再读 从光标的地方开始写入,写多少占多少,会出现问题的
# f = open('python学习本地路径02',mode='r+',encoding='utf-8')
# f.write("aaaaaaaaaaaaaaaaaaaa")
# print(f.read())
# f.close()
# 写读 w+ 不常用
# f = open('python学习本地路径02',mode='w+',encoding='utf-8')
# f.write("aaaaaaaaaaaaaaaaaaaa")
# f.seek(0) # 调整光标 不加这一步读取不了,因为默认光标在最后一个
# print(f.read())
# f.close()
# 功能详解 r+
# f = open('python学习本地路径02',mode = 'r+',encoding='utf-8')
# f.seek(6) # seek是按照字节去定的位置,utf-8对于中文,三个字节一个字符。对于英文:1个字节一个字符
# #f.tell() # 查询,告诉你光标的位置
# print(f.tell())
# # 知道光标在哪里,调节光标的位置
# #f.seek(f.tell()-3)
# content = f.read(3) # 字符:你能看到的这段文字的最小单位 read()里面代表从光标位置开始读取字符的数量,
# print(content)
# readline 一行一行的读取
# line = f.readline() # 默认读取第一行
# line = f.readlines() # 每一行当成列表的一个元素,添加到一个列表中 # ['杭州海博智能科技有限公司
', '阿特拉斯浙江授权代理商
', '主要为高端制造业提供智能装配系统']
# truncate() 对源文件截取,注意是按照字节去截取的
# 源文件:
'''
杭州海博智能科技有限公司
阿特拉斯浙江授权代理商
主要为高端制造业提供智能装配系统
'''
# f.truncate(6) # 杭州
# 补充 for循环一行一行的读取 ,如果文件太大就用for循环,因为每次内存中读取一行,不会全部读取出来
# for i in f:
# print(i)
# print()
# f.close()
# 补充:不需要在文件操作的末尾加close,就用with
# with open('python学习本地路径02',mode = 'r+',encoding='utf-8') as f:
# # 下面内容要有缩进
# print(f.read())
#补充:同时打开多个文件
with open('python学习本地路径02',mode = 'r+',encoding='utf-8') as f,open('python学习本地路径',mode = 'r+',encoding='utf-8') as f2:
# 下面内容要有缩进
print(f.read(),f2.read())
# 下面内容要有缩进
print(f.read())
# 文件修改:不能被直接修改,要通过其他方式进行修改的
'''
把源文件:
名称:阿特拉斯
型号:气动工具
气功工具改为电动工具
'''
with open('注册登录',encoding='utf-8') as f,open('注册登陆.bak','w',encoding='utf-8') as f2:
for i in f:
#print(i,type(i))
#f2.write(i)
if '气' in i:
i = i.replace('气','电') # 字符串替换
print(i)
f2.write(i) # 注意这行代码的位置
# 删除文件,重命名文件
import os
os.remove('注册登录')
os.rename('注册登录.bak','注册登录')
1.1.1,注册登录题目
# 注册登陆题目
username = input('请输入你需要注册的用户名:')
password = input('请输入你要注册的密码:')
with open('注册登录',mode='w',encoding='utf-8') as f:
f.write('{}
{}'.format(username,password))
print('恭喜你,注册成功')
lis = []
i = 0
while i < 3:
print('请登录')
name = input('请输入你的用户名:')
psw = input('请输入你的密码:')
with open('注册登录', mode='r+', encoding='utf-8') as f1:
#info = f1.readlines() # 多行读取,把每一行当一个元素添加到列表中
for j in f1:
print(j)
lis.append(j.strip())
print(lis)
if name == lis[0] and psw == lis[1]:
print('登陆成功')
break
else:
print('你输入的用户名和密码错误,请重新输入')
i += 1
else:
print('你已经超过三次输入错误,请稍后再试')
View Code