文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python学习day8 文件操作

2023-01-30 22:35

关注

老男孩python全栈day8

文件操作

编码方式:utf-8  gbk......

操作方式:只读,只写,追加,读写,写读。。。  以什么编码方式打开文件,就以什么编码方式进行操作

只读:

r

f = open('d:\模特主妇护士班主任.txt',mode='r',encoding='UTF-8')
content = f.read()
print(content,type(content))  #str
f.close()

rb    bytes类型 用于非文字的文件

f = open('模特主妇护士班主任',mode='rb',)   #默认encoding方式
content = f.read()
print(content)
f.close()  

只写:

w   如果没有此文件,创建;如果有此文件,覆盖原文件写入

f = open('log',mode='w',encoding='utf-8')
f.write('骑兵步兵')
f.close() 

wb

f = open('log',mode='wb')  #打开默认bytes
f.write('附近看到类似纠纷'.encode('utf-8'))  #写入必须加编码方式
f.close()

 

追加:

a   在原文件光标出追加

f = open('log',mode='a',encoding='utf-8')
f.write('佳琪')
f.close()

ab

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('大猛,小孟')  #在原文件后面继续写入
f.close()

# 先写后读
f = open('log',mode='r+',encoding='utf-8')
f.write('大猛,小孟')  #原文件内容从第一个位置开始覆盖,覆盖的长度为写入的长度
print(f.read())   #显示的是未覆盖的内容
f.close()

  

r+b

f = open('log',mode='r+b')
print(f.read())
f.write('大猛,小孟'.encode('utf-8'))  #这里注意就好
f.close()

写读:

w+

f = open('log',mode='w+',encoding='utf-8')  #先创建文件
f.write('aaa')
f.seek(0)  ##必须加入此操作,不然读不出来,#调节光标 从某个字节处开始读
print(f.read())
f.close()

w+b 不再赘述

功能详解

obj = open('log',mode='r+',encoding='utf-8')
content = f.read(3)  # 读出来的都是字符 读三个字符
f.seek(3)  # 按照字节设置光标的位置  光标在3个字节处  一个中文3个字节
f.tell() 告诉你光标的位置
print(f.tell())

f.readable()  # 是否刻度
line = f.readline()  # 一行一行的读
line = f.readlines()  # 每一行当成列表中的一个元素,添加到list中
f.truncate(4)   #截取前4个字符 覆盖文件 其实就是除了前4个字符,删除后面的
for line in f:
    print(line)  #按行打印,会将回车\n也打印进去
f.close()

## 一下的功能是读取指定位置的字符
f = open('log',mode='a+',encoding='utf-8')
f.write('佳琪')
count = f.tell()  #光标的位置
f.seek(count-9)   #将光标设为倒数三个字前(三个字节代表一个汉字)
print(f.read(2))  #从光标处开始读两个字符 也就是读两个汉字
f.close()
## with可以打开多个文件
with open('log',mode='r+',encoding='utf-8') as f,\ 
    open('log',mode='w+',encoding='utf-8') as f1:

 

open()默认读取方式是r,默认编码方式是跟操作系统相匹配,一般是gbk

 

读的方式:

read 一次性读 

readlines 一次性读,按行切分

readline 一行一行读,但是不知道在哪儿结束,视频 图片 rb bytes 按照字节读

for循环 —— 最好了!!!  for line in f:

 

光标 —— 文件指针
seek -- 指定光标移动到某个位置
tell -- 获取光标当前的位置
truncate -- 截取文件

 

实践:

修改文件:读一个、写一个、删一个、重命名

# 修改文件
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','小护士班主任')  #重命名文件

  

简单的注册、登陆

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():  ### 读出来的会有回车  strip()将其去掉
        print('登录成功')
        break
    else:print('账号和密码错误')
    i+=1

  

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯