13 文件操作

#读取当前路径下的文件
f = open('模特主妇护士班主任.txt',mode = 'r',encoding='utf-8')
content = f.read()
print(content)
f.close()
# 路径下的文件
f = open('g:\MyPython\模特主妇护士班主任.txt',mode = 'r',encoding='utf-8')
content = f.read()
print(content,type(content))  #我们是中国人民解放军 <class 'str'>
f.close()
f = open('g:\MyPython\模特主妇护士班主任.txt',mode = 'rb')
content = f.read()
print(content) #b'\xe6\x88\x91\xe4\xbb\xac\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba\xe6\xb0\x91\xe8\xa7\xa3\xe6\x94\xbe\xe5\x86\x9b'
f.close()
# 文件写入 (只写)对于W ,没有此文件就创建,如果有就覆盖
f = open('log',mode = 'w',encoding='utf-8')
f.write('我们是12骑兵')
f.close()
f = open('log1',mode = 'wb')
f.write('我们是12骑兵'.encode('utf-8'))
f.close()
f = open('log1',mode = 'wb')
f.write('我们是12骑兵'.encode('gbk'))
f.close()
# 追加
f = open('log',mode = 'a',encoding='utf-8')
f.write('在后面加')
f.close()
f = open('log',mode = 'ab')
f.write('新地'.encode('utf-8'))
f.close()
# 读写文件  最常用的是 r+
f = open('log',mode = 'r+',encoding='utf-8')
print(f.read())              #我们是中国人民解放军
f.write('中主的耻地是地')   #我们是12骑兵在后面加新地中主的耻地是地
f.close()
f = open('log',mode = 'r+',encoding='utf-8')  #不要先写后读
f.write('asddes')
print(f.read())
f.close()
f = open('log',mode = 'r+b')  #以bytes读写
print(f.read())
f.write('中主的耻地是地'.encode('utf-8'))
f.close()
# 文件写入 (只写),没有此文件就创建,如果有就覆盖
f = open('log2',mode = 'w+',encoding='utf-8')
f.write('我们是12骑兵')
f.seek(0)           #指向位置的光标
print(f.read())     #我们是12骑兵
f.close()
f = open('log',mode = 'a+',encoding='utf-8')
f.write('在后面加')
f.seek(0)           #指向位置的光标
print(f.read())
f.close()
# 下面都以 r+ 为例,功能讲解   如果是中文,seek是按字节指定,不可以半个汉字
f = open('模特主妇护士班主任.txt',mode = 'r+',encoding='utf-8')  #asdfkvngifftr
content = f.read(3)     #读取个数 read是按字符指定
print(content)          #asd
f.seek(3)               #指针指向 3
print(f.tell())         #当前光标位置 3
print(f.read())         #fkvngifftr
f.close()
f = open('log',mode = 'a+',encoding='utf-8')  #asddes是12
f.write('在后面加')                             #asddes是12在后面加
count = f.tell()        #当前光标位置
f.seek(count-6)         #指向位置的光标
print(f.read(1))        #读一个字          面
f.close()
f = open('log',mode = 'a+',encoding='utf-8')    #asddes是12
                                                  #早顺呃顷欠
f.seek(0)
line = f.readline()         #读一行               #asddes是12
print(line)
f.seek(f.tell())            #文件光标指向前一个结束光标
line = f.readline()         #读一行               #asddes是12
print(line)
f.seek(0)
line = f.readlines()        #每一行当成列表中的一个元素
print(line)                 #['asddes是12\n', '早顺呃顷欠']
f.seek(0)
for line in f:             #循环打印文件中的内容  (如果文件大不可以这样读)
    print(line)             #asddes是12
                            #早顺呃顷欠
f.close()
#with  不用关闭语句
with open('log',mode = 'r+',encoding='utf-8') as obj:  #with  不用关闭语句
    print(obj.read())
with open('log',mode = 'r+',encoding='utf-8') as f,\
        open('log',mode = 'w+',encoding='utf-8') as f1:
    print(f.read())

 #注册与登录

username = input('请输入你要注册的用户名:')
password = input('请输入你要注册的密码:')
with open('list_of_info',mode='w',encoding='utf-8') as f:
    f.write('{}\n{}'.format(username,password))
print('恭喜你注册成功')
lis = []
i = 0
while i<3:
    usn = input('请输入你的用户名:')
    pwd = input('请输入你的密码:')
    with open('list_of_info',mode='r+',encoding='utf-8') as f1:
        for line in f1:
            lis.append(line)
    if usn == lis[0].strip() and pwd == lis[1].strip():
        print('登录成功')
        break
    else:
        print('你的账号或密码错误')
    i += 1

 #修改文件 文件是不能修改的,可以一行一行读文件,修改后存入新文件,最后改回来

小护士班主任      文件中的内容为:
小护士:李小妞
班主任:星儿
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','小护士班主任')     #重命名文件

执行结果:

小护士班主任      文件中的内容为:
小护士:李小妞
班主任:星儿

原文地址:https://www.cnblogs.com/bydzxzy/p/9636450.html