zoukankan      html  css  js  c++  java
  • python之路day08--文件的操作

    文件的操作

    hanfei的博客.txt

    1/文件的路径
    2、编码方式
    3、操作方式:只读,只写,追加,读写,写读...
    只读
    f=open('hanfei的博客',mode='r',encoding='utf-8')
    print(f.read()) #战术上勤奋掩盖不了战略上的懒惰
    f.close()
    
    f=open('hanfei的博客',mode='rb')   #rb代表只读bytes类型,不需要写编码方式
    print(f.read(),type(f)) #b'xe6x88x98xe6x9cxafxe4xb8x8axe5x8bxa4xe5xa5x8bxe6x8exa9xe7x9bx96xe4
    xb8x8dxe4xbax86xe6x88x98xe7x95xa5xe4xb8x8axe7x9ax84xe6x87x92xe6x83xb0'
    f.close()
    读写 r+
    先读在写
    f =open('hanfei的博客',mode='r+',encoding='utf-8')
    print(f.read()) #先把内容读出来,现在光标在最后
    f.write('hahhaha') #然后在写
    f.close()
    
    
    f =open('hanfei的博客',mode='r+b') #以bytes类型写读,一般用不到
    print(f.read()) #先把内容读出来,现在光标在最后
    f.write('bbb'.encode('utf-8')) #然后在写
    
    先写再读
    f =open('hanfei的博客',mode='r+',encoding='utf-8') #文件内容:萨达撒大大萨达萨达是
    f.write('我是') #从头开始写,有多少位占多少位,光标在这里,最后在读出来
    print(f.read()) #撒大大萨达萨达是
    f.close() #
    只写
    f=open('hanfei的博客',mode='w',encoding='utf-8')
    f.write('放假了')  #如果没有这个文件,则创建写入。有这个文件写的时候会把文件内容清楚,在写
    
    
    f=open('hanfei',mode='wb')  #写成bytes类型
    f.write('博客园'.encode('utf-8'))   #srt-->>bytes存储 编码utf-8
    写读 w+
    f=open('hanfei的博客',mode='w+',encoding='utf-8')
    f.write('放假了')
    print(f.read()) #空的  因为写完后光标在最后,所以读不到什么东西了
    
    
    f=open('hanfei的博客',mode='w+',encoding='utf-8')
    f.write('放假了')
    f.seek(0) #设置光标
    print(f.read()) #放假了
    追加a
    f = open('hanfei',mode='a',encoding='utf-8')
    f.write('good!')  #默认光标在最后一位,在追加
    
    f = open('hanfei',mode='ab')
    f.write('day day up!'.encode('utf-8'))
    a+(也是读写)
    f = open('hanfei',mode='a+',encoding='utf-8')
    f.write('good!~~~')  #默认光标在最后一位,在追加
    f.seek(0)
    print(f.read()) #博客园good!good!good!day day up!good!good!good!~~~good!~~~

    功能详解:seek、tell、readline、readlines

    seek简介:用于移动文件读取指针到文件指定的位置
    file. seek(offset[, whence])
    whence:0,1,2三个参数,0表示文件开头,1表示当前位置,2表示文件结尾
    offset:偏移量,可正可负,正数表示向后移动offset位,负数表示向前移动offset位。

    f = open('hanfei',mode='r+',encoding='utf-8')  #博客园good!good!good!day day up!good!good!good!~~~good!~~~我是
    # print(f.read(3))#博客园   #读出来的都是字符
    f.seek(3) #seek设置光标 是按照字节取的,utf-8里,3个字节表示一个中文,1个字节表示一个英文字符
    count=f.tell()  #tell 告诉你光标的位置
    print(count) #3 光标的位置
    
    print(f.read())
    f.close()
    f.readable() #判断是否可读 返回T or F
    line=f.readline() #一行一行s的读
    line=f.readlines() #每一行当成一个元素,添加到列表中例如['asd
    ', '123
    ', '4444']
    
    print(line)
    for line in f:  #对文件中内容循环打印出来,不要全部读出来,要限制字符数量f.read(1000)
    print(line) #abc12

    f.close()

    截取

    f.truncate(5) #截取到第5位

    当open文件的时候,最后都要加上close.还有另外一种方法不用close关闭文件 with open

    with open('hanfei',mode='r+',encoding='utf-8') as f1,
            open('hanfei',mode='w+',encoding='utf-8') as f2:
    
        for line in f1:
            print(line)
    
    with open('test',mode='w+',encoding='utf-8') as f1,
            open('test',mode='r+',encoding='utf-8') as f2:
        f1.write('asd
    123
    4444')
        f1.seek(0)
        print(f1.read())
    
        # print(f2.readlines()) #['asd
    ', '123
    ', '4444']
        f2.seek(2,0) #从头开始读,光标在第二位 #d
        print(f2.read())

    练习题:登录注册、用户名密码储存到文件中

    #需求:注册的时候把用户名密码储存到文件中
    username = input('请输入您要注册的用户名:')
    password = input('请输入要设置的密码:')
    with open('user_of_info', mode='w', encoding='utf-8') as f:
        f.write('{usmn}
    {passwd}'.format(usmn=username, passwd=password))
        f.seek(0)
        print(f.read(), type(f.read()))  # hanfei 1234
    
    
    i=0
    lis=[]
    while i <3:
            user = input('请输入您的用户名:')
            pwd  = input('请输入密码:')
            with open('user_of_info',mode='r+',encoding='utf-8') as f1:
                for line in f1:
                    lis.append(line)
                    #print(lis)
            if user.strip() ==lis[0].strip() and pwd.strip()==lis[1].strip() :
                print('登陆成功!')
                break
    
            else:
                print('用户名或密码错误,请重试')
    
            i+=1
    #文件处理

    #打开文件
    #open('路径','打开方式','指定编码方式')
    #打开方式 r w a r+ w+ a+ b #不写的话(默认是read)
    #r+ 打开文件直接写 和 读完在写 (光标位置不同)
    # 建议读的时候就读,写的时候就写,只能单独的方式去操作文件


    #操作文件
    #读
    #read 一次性读
    #readline #一行一行读
    #不知道在哪儿结束
    #视频、图片用rb 读,按照字节读取
    #for循环--最好

    #写
    #write
    # 换行
    #光标——文件指针
    #seek 指定光标移动到某个文职
    #tell
    #truncate

    #关闭文件
    # close
     修改文件: 文件是不能修改的
    
    # (只能先把文件读出来,在写到另一个文件中,把旧文件删除,新文件重命名为原文件名)
    f = open('小护士班主任',mode='w',encoding='utf-8')
    f.write('班主任:星儿
    小护士:金老板')
    
    
    with open('小护士班主任',mode='r',encoding='utf-8')as f,
            open('小护士班主任.bak',mode='w',encoding='utf-8') as f2:
        for line in f:
            if '星儿' in line:
                line = line.replace('星儿','阿娇')
    
            f2.write(line)
    
    #删除文件和重命名文件 导入os模块
    import os
    os.remove('小护士班主任') #删除文件
    os.rename('小护士班主任.bak','小护士班主任') #重命名




  • 相关阅读:
    一些你可能用到的代码
    iOS 键盘下去的方法
    iOS设计模式汇总
    随笔
    Spring cloud config 分布式配置中心 (三) 总结
    Spring cloud config 分布式配置中心(二) 客户端
    Spring cloud config 分布式配置中心(一) 服务端
    jdbcUrl is required with driverClassName spring boot 2.0版本
    JpaRepository接口找不到 spring boot 项目
    解决IntelliJ “Initialization failed for 'https://start.spring.io'
  • 原文地址:https://www.cnblogs.com/hanfe1/p/10315405.html
Copyright © 2011-2022 走看看