文件操作

一、关于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
原文地址:https://www.cnblogs.com/huangjm263/p/8110735.html