文件操作

补充储备

1.with语法支持一次性打开多个文件,需要用逗号隔开eg:with open(r'a.txt','r',encoding='utf8') as f1 , open(r'b.txt','r',encoding='utf8') as f2,open(r'c.txt','r',encoding='utf8') as f3:pass
2.补全python语法(pass ...),但是不执行任何操作,在搭建项目框架时经常会用
3.通常情况下,英语单词的结尾如果跟上了able表示具备该单词描述的能力eg:readable  具备读取的能力writeable  具备填写内容的能力

文件读写模式

控制文件读写的操作模式有三个: ‘r’ 模式(默认)、'w’模式(只写模式)、'a’模式(追加只写模式)

1.r模式 : 只读模式(默认的模式) >>>使用该模式打开的文件,只能读,不能写1.1当文件路径不存在时,r模式打开文件会报错eg:with open(r'不存在的文件.txt','r',encoding='utf8') as f1:pass    # 报错1.2当文件路径存在时,r模式会打开该文件等待读取内容eg:with open(r'存在的文件.txt','r',encoding='utf8') as f1:print(f1.read())   >>> 打印的是'存在的文件.txt'的内容f1.write('123')  # 报错 not writable 在r模式下只能读,不能写
2.w模式 :只写模式  >>>使用该模式打开的文件只能写,不能做其他操作(读)2.1当文件路径不存在时,w模式会自动创建该文件eg:with open(r'不存在的文件_w.txt','w',encoding='utf8') as f1:pass2.2当文件路径存在时,w模式会先清空该文件内容 之后等待填写新的内容eg:with open(r'存在的文件_w.txt','w',encoding='utf8') as f1:f1.write(123) # 报错 填写的内容只能是字符串f1.write('你好\n在干嘛')
3.a模式 :追加只写模式 >>>使用该模式打开文件默认是在末尾追加新的内容 不能做其他操作(读)3.1当文件路径不存在时,a模式会自动创建该文件eg:with open(r'不存在的文件_a.txt','a',encoding='utf8') as f1:pass3.2当文件路径存在时,a模式不会先清空该文件内容,只在文件内容末尾等待填写新的内容eg:with open(r'存在的文件_a.txt','a',encoding='utf8') as f1:# f1.write(123) # 报错 填写的内容只能是字符串f1.write('你好\n在干嘛')  >>>在文件内容末尾写"你好",另起一行"在干嘛"

文件的操作模式

文件的操作模式有 "t"模式(文本模式)、"b"模式(二进制模式)

1.t模式 :文本模式 >>>文本操作的默认模式r    rtw     wta     atps: 1.只能操作文本文件eg:with open(r'图片.jpg', 'rt', encoding='utf8') as f1:f1.read() # 报错2.必须指定encoding参数eg:with open(r'a.txt', 'rt') as f1:print(f1.read())  >>> 读取内容乱码3.读写都是以字符串为单位eg:with open(r'a.txt','w',encoding='utf8') as f1:f1.write(123)  # 报错 >>> 只能写字符串
2.b模式 : 二进制模式 >>》必须自己指定哪种模式r    rbw    wba    abps:1.能够操作所有类型的文件eg:with open(r'图片.jpg','rb') as f1:print(f1.read())  >>> 返回二进制的数据类型2.不需要指定encoding参数eg:with open(r'a.txt','rb',encoding='utf8') as f1:pass  # 报错3.读写都以bytes为单位eg:with open(r'图片.jpg','rb') as f1:data = f1.read()print(type(data))  # <class 'bytes'>
3.拷贝功能3.1 文本模式(t) :读取(rt)-赋值-写入(wt)eg:with open(r'a.txt','r',encoding='utf8') as f1,open('b.txt','w',encoding='utf8') as f2:data = f1.read()f2.write(data)3.2 二进制模式(b):读取(rb)-赋值-写入(wb)eg:with open(r'图片.jpg','rb') as f1,open(r'b.jpg','wb') as f2:data = f1.read()f2.write(data)

文件的操作方法

1.read() 一次读取文件内容,并且光标会停留在文件的末尾;如果继续读,就为空不打印eg:with open(r'a.txt','r',encoding='utf8') as f1:print(f1.read())print(f1.read())ps:原a.txt的文本内容是'11\n在干\nhello'执行以上代码 打印出的结果是'11\n在干\nhello',表明read()方法读取全部内容后,光标移到内容末尾,如果再继续打印,后面就是空的
2.当文件内容过大时,可使用for循环,一行一行的读取在CPU工作时,是与内存交接,当文件内容大小大于内存大小时,无法读取到内容;当使用for循环,当读取到一行内容以后会进行垃圾回收机制,来清理内存eg:with open(r'a.txt','r',encoding='utf8') as f1:for line in f1:print(line)print('****')
3.readline() 一次只读一行内容eg:with open(r'a.txt','r',encoding='utf8') as f1:print(f1.readline())  >>>打印第一行内容print(f1.readline())  >>>打印第二行内容print(f1.readline())  >>>打印第三行内容
4.readlines() 按照行的方式读取所有的内容并组织成列表返回 eg:with open(r'a.txt','r',encoding='utf8') as f1:print(f1.readlines())  # ['11\n', '在干嘛\n', 'hello']
5.readable() 判断当前文件是否可读  返回Farse、True
6.writeable() 判断当前文件是否可写 返回Farse、True
7.writelines() 支持填写容器类型(内部可以存放多个数据值的数据类型)多个数据值eg:with open(r'b.txt','w',encoding='utf8') as f1:f1.writelines(['nana\n','xiao\n','lisa\n'])
8.flush()  将内存中的文件数据立刻刷到硬盘(主动按ctrl+s)eg:with open(r'b.txt','w',encoding='utf8') as f1:f1.writelines(['nana\n','xiao\n','lisa\n'])f1.flush()

作业

1.编写简易版本的拷贝工具
自己输入想要拷贝的数据路径 自己输入拷贝到哪个地方的目标路径
任何类型数据皆可拷贝
ps:个别电脑C盘文件由于权限问题可能无法拷贝 换其他盘尝试即可

解题思路
1.拷贝文件,首先要读取文件内容,然后赋值,最后写入
2.题目是任何数据类型皆可以拷贝,就用b模式
orig_path = input("请输入你想要拷贝的数据路径>>>:").strip()
target_path = input("请输入你想要拷贝的目标路径").strip()
with open(orig_path,'rb') as f1:data = f1.read()
with open(target_path,'wb') as f2:f2.write(data)

2.利用文件充当数据库编写用户登录、注册功能
文件名称:userinfo.txt
基础要求:
用户注册功能>>>:文件内添加用户数据(用户名、密码等)
用户登录功能>>>:读取文件内用户数据做校验
ps:上述功能只需要实现一次就算过关(单用户) 文件内始终就一个用户信息
拔高要求:
用户可以连续注册
用户可以多账号切换登录(多用户) 文件内有多个用户信息
ps:思考多用户数据情况下如何组织文件内数据结构较为简单
提示:本质其实就是昨天作业的第二道题 只不过数据库由数据类型变成文件

1.单用户
while True:print("""1 注册2 登录""")choice =input("请输入你的指令:>>>").strip()if choice == '1':regis_name = input("请输入你想要注册的用户名:>>>").strip()regis_pwd = input("请输入你注册用户名的密码:>>>").strip()with open(r'userinfo.txt', 'w', encoding='utf8') as f1:f1.write(f'{regis_name}|{regis_pwd}')print("注册成功")elif choice == '2':in_name = input("请输入你用户名:>>>").strip()in_pwd = input("请输入你的密码:>>>").strip()with open(r'userinfo.txt','r',encoding='utf8') as f2:data = f2.read()real_name,real_pwd = data.split('|')if real_name == in_name and real_pwd == in_pwd:print("登录成功")else:print("登录失败")else:print("指令输入错误,再试一次")2.多用户
tag_login = False
while True:print("""1 注册2 登录""")choice =input("请输入你的指令:>>>").strip()if choice == '1':regis_name = input("请输入你想要注册的用户名:>>>").strip()regis_pwd = input("请输入你注册用户名的密码:>>>").strip()with open(r'userinfo.txt', 'a', encoding='utf8') as f1:f1.write(f'{regis_name}|{regis_pwd}\n')print("注册成功")elif choice == '2':in_name = input("请输入你用户名:>>>").strip()in_pwd = input("请输入你的密码:>>>").strip()with open(r'userinfo.txt','r',encoding='utf8') as f2:data = f2.readlines()for user_info in data:real_name,real_pwd = user_info.strip().split('|')if real_name == in_name and real_pwd == in_pwd:print("登录成功")login_tag = Trueelse:continueif not tag_login:print("登录失败,请重新登录")  else:print("指令输入错误,再试一次")

文件操作:读写模式、操作模式、操作方法相关推荐

  1. Python文件的读写以及操作excel

    文件的读写操作 使用open函数打开文件 f = open(文件名,'读写操作') f.close() # 例如 open('root.txt','w') 2.常见的操作有 操作模式 具体含义 'r' ...

  2. python关闭读写的所有的文件-Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python! hello world! ...

  3. python教程文件 txt_Python读写txt文本文件的操作方法全解析

    filename = 'array_reflection_2D_TM_vertical_normE_center.txt' # txt文件和当前脚本在同一目录下,所以不用写具体路径 pos = [] ...

  4. linux c文件操作,Linux C 文件的输入/输出操作

    10.1 文件I/O操作概述 在Linux系统中,文件I/O操作可以分为两类,一类是基于文件描述符的I/O操作,另一类是基于数据流的I/O操作. 10.1.1 文件描述符简介 在文件操作一章中,也经常 ...

  5. 文件的输入/输出操作

    10.1 文件I/O操作概述 在Linux系统中,文件I/O操作可以分为两类,一类是基于文件描述符的I/O操作,另一类是基于数据流的I/O操作. 10.1.1 文件描述符简介 在文件操作一章中,也经常 ...

  6. Python之文件的读写

    文章目录 前言 一.打开和关闭文件(open和close) 1.打开文件 2.关闭文件 mode的方式 几种读取文件的函数 写入文件的函数 二.with-open-as操作文件 1.with-open ...

  7. Android 第二章 本地文件的读写

    读写的第一种方式: 使用最初始的IO方式读写到应用包目录下面 package com.example.login;import java.io.BufferedReader; import java. ...

  8. python以写模式打开的文件无法进读操作_Python文件操作:文件的打开关闭读取写入...

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  9. python文件只读模式_Python脚本去除文件的只读性操作

    如何在PYTHON中移去文件的只读属性, 用chmod命令stat.S_IWRITE import os import stat os.chmod( filename, stat.S_IWRITE ) ...

  10. python如何进入文件夹_python之文件的读写和文件目录以及文件夹的操作实现代码...

    这篇文章主要介绍了python之文件的读写和文件目录以及文件夹的操作实现代码,需要的朋友可以参考下 为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用 ...

最新文章

  1. [导入]WindowsXp的两个问题:
  2. snort完整安装(snort-2.8.3.1)
  3. linux vi修改后如何保存
  4. Wpf TextChanged事件导致死循环,事件触发循环问题
  5. C语言学习之1到5的乘积1到N的乘积
  6. 变化的和不变的-让自己慢下来(49)
  7. 使用 Nginx 提升网站访问速度
  8. 如何快速学习freemarker以及使用经验
  9. h5难做吗_还在担心H5太难做?介绍一个H5制作工具给你!
  10. C#中的方法(函数),委托和事件
  11. 2021-09-08173. 二叉搜索树迭代器 栈
  12. 基于Simulink的机械式飞行操纵系统建模与仿真
  13. mtk刷机工具sp flash tool_qpst刷机(翻到高中刷机时的记录,想来qpst对现在玩机的人也有用吧...
  14. java 二叉树转数组_java二叉树怎么转成数组?java怎么实现二叉树?
  15. adc0832工作原理详解_adc0834工作原理及AD转换
  16. 存储容量byte 流量单位byte
  17. 谈谈Google AdSense以外的国外优秀广告联盟
  18. 同事把实数作为 HashMap 的key,领导心态崩了
  19. Ciri智能语音系统
  20. html如何调用短视频文件,短视频脚本怎么写?3种短视频脚本的创意写作方法干货分享!...

热门文章

  1. golang性能分析pprof使用
  2. 一文搞懂ThreadPoolExecutor
  3. C语言Python语言打印 ascii 表 乱码的原因,出现问号,无法打印心形
  4. win7旗舰版6l打印机咋安驱动_win7怎么装打印机驱动_win7安装打印机驱动的方法步骤...
  5. D435i—Kalibr标定
  6. 基于Android实现日语学习app设计与实现演示【附项目源码+论文说明】分享
  7. android:inputType
  8. 二级C语言知识点总结中
  9. 网盛生意宝推出“衣服网” 孙德良进军B2C电子商务领域
  10. lsof 源码下载地址,旧版本