专栏首页python3python学习day8 文件操作

python学习day8 文件操作

老男孩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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python学习笔记 --- pytho

    就是利用python中的 pexpect ,类似于linux下expect这个包。

    py3study
  • CentOS python 2.6 升级

    CentOS 6.5自带的python版本为2.6.6,但是日常工作中使用2.7.x的版本比较多,则可以通过升级来满足需求。然而旧版本的Python已经被系统深...

    py3study
  • python文件操作

    1. 文件操作 open 打开 f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操...

    py3study
  • 代谢组学数据一般存放在MTBLS

    这次又接触了一下代谢组学数据,看的文章是 Cell. 2019 May 2;177(4):

    生信技能树
  • Ansible 搭建与配置(Ⅱ)

    老七Linux
  • Linux 之父如何定义 Linux?

    来源:马哥教育链接:https://mp.weixin.qq.com/s/wwBt5H68tHmf_lHXrd_eSQ本文是 Linus 写于 1991年10月...

    Py_lover
  • Linux 之父如何定义 Linux?

    LINUX是一个免费类unix内核,适用于386-AT计算机,附带完整源代码。主要让黑客、计算机科学学生使用,学习和享受。它大部分用C编写,但是一小部分是用gn...

    用户6543014
  • 微信公众平台基础功能优化 提升用户体验

    近期公众平台优化了包括群发消息、自定义菜单、通知中心、公众号设置等多个使用频率较高的功能模块,旨在提升用户体验。主要优化点如下: 一、群发消息:提升图文消息曝光...

    ytkah
  • Linux 之父如何定义 Linux?

    LINUX是一个免费类unix内核,适用于386-AT计算机,附带完整源代码。主要让黑客、计算机科学学生使用,学习和享受。它大部分用C编写,但是一小部分是用gn...

    小小科
  • Chrome开发者工具Network标签页中观察到的set-cookie jsessionid是什么东西

    根据Google搜索的结果: https://javarevisited.blogspot.com/2012/08/what-is-jsessionid-in...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券