python文件操作

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
原文地址:https://www.cnblogs.com/baozi789654/p/10356398.html