zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    su 命令切换用户带来的问题
    系统无法启动
    Linux单用户模式
    反射
    propety/静态方法
    内置方法,序列化模块
    第1月5周3天
    第1月4周5天
    第1月4周4日
    第1月4周3日
  • 原文地址:https://www.cnblogs.com/baozi789654/p/10356398.html
Copyright © 2011-2022 走看看