zoukankan      html  css  js  c++  java
  • 文件操作

    一、关于open模式

    w  以写方式打开

    w+ 以读写模式打开

    wb 以二进制写模式打开

    wb+ 以二进制读写模式打开

    a  以追加模式打开

    a+ 以读写模式打开

    ab 以二进制追加模式打开

    ab+ 以二进制读写模式打开

    r  以只读方式打开

    r+ 以读写方式打开

    rb 以二进制读模式打开

    rb+ 以二进制读写模式打开

    二、功能详解

    f.read([size])  #size为读取的长度,以byte为单位

    f.readline([size])  #读一行,如果定义了size,有可能返回的只是一行的一部分

    f.readlines([size])  #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

    f.write(str)  #把str写到文件中,write()并不会在str后加上一个换行符行后面加上任何东西。

    f.writelines(seq)  #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

    f.close()  #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其进行操作会产生ValueError

    f.flush()  #把缓冲区的内容写入硬盘

    f.tell()  #返回文件操作标记的当前位置,以文件的开头为原点。

    f.next()  #返回下一行,并将文件操作标记位移到下一行。把一个file用于for...in  file这样的语句时,就是调用next()函数来实现遍历的。

    f.seek(offset)  #将文件的操作标记移到offset的位置。

    f.truncate([size])  #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。

    将注册的用户名和密码写入到一个文件中,然后通过读取此文件验证用户名跟密码是否正确
    username = input('请输入你要注册的用户名:')
    password = input('请输入你要注册的密码:')
    with open('list_of_info',mode='w',encoding='utf-8') as f:
        f.write('{}
    {}'.format(username,password))
    print('恭喜你,注册成功')
    
    lis = []
    i = 0
    while i < 3:
        uname = input('请输入你的用户名:')
        pwd = input('请输入你的密码:')
        with open('list_of_info',mode='r+',encoding='utf-8') as f1:
            for line in f1:
                lis.append(line)
        if uname == lis[0].strip() and pwd == lis[1].strip():
            print('登录成功')
            break
        else:
            print('账号/密码错误')
        print(lis)
        i += 1

     读:

      read 一次性读

      readlines  一次性读

      readline  一行一行读(不知道在哪儿结束。视频 图片  rb  bytes 按照字节读)

      for  循环 ---最好!!!

     
    #读取一个文件中的信息,进行内容的选择性替换
    with open('用户信息表',encoding='utf-8') as f, open('用户信息表.bak','w',encoding='utf-8') as f2:
        for line in f:
            if '张三' in line:
                line = line.replace('张三','李四')
            f2.write(line)
    
    import os
    os.remove('用户信息表')
    os.rename('用户信息表.bak','用户信息表')
    
    # 用户信息表
    #     学号:001
    #     姓名:李四
    #     年龄:18
    #同事打开两个文件,把a复制到b中,读一行写一行,直到写完
    with open('f1',encoding='utf-8') as a,open('f2','w',encoding='utf-8') as b:
        for line in a:
            b.write(line)
    View Code
  • 相关阅读:
    js处理数学经典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    js的水仙花数的输出
    js中关于一个数组中最大、最小值以及它们的下标的输出的一种解决办法
    通过HMI显示西门子SINAMICS V90伺服驱动器报警代码和报警信息
    outlook Archive 归档减小服务器文件夹大小
    西门子触摸屏TP,KTP的报警历史记录数量
    解决HP ZBOOK 蓝屏, 释放静电的方法
    LOGO! 8.2 与 WinCC之间以太网通信的地址对应关系
    Windows10 文件索引功能,替代everything
    行星减速机的精度和强度
  • 原文地址:https://www.cnblogs.com/huangjm263/p/8110735.html
Copyright © 2011-2022 走看看