Python文件操作基础流程解析


Posted in Python onMarch 19, 2020

一.文件操作的流程

1、打开文件

open('C:\a.txt\nb\c\d.txt')

解决方案一:推荐

open(r'C:\a.txt\nb\c\d.txt')

解决方案二:

open('C:/a.txt/nb/c/d.txt')

f=open(r'aaa/a.txt',mode='rt') # f的值是一种变量,占用的是应用程序的内存空间

2、操作文件:

读/写文件,应用程序对文件的读写请求都是在向操作系统发送系统调用,然后由操作系统控制硬盘把输入读入内存、或者写入硬盘

res=f.read()

3、关闭文件

f.close() # 回收操作系统资源

f.read() # 变量f存在,但是不能再读了

二.资源管理与with上下文管理

打开一个文件包含两个部分资源:应用程序的变量f和操作系统打开的文件。

在操作完一个文件后必须把这两部分的资源回收

通常回收有两种方法:

1 f.close()#回收操作系统打开的文件资源

2 del f # 回收应用程序资源

其中,del f 一定要发生在f.close()之后,否则就会导致操作系统打开的文件无法关闭,。

python的垃圾回收机制让我们无序考虑del f,所以我们必须记住,操作完毕后一定要fclose(),

但是我们都是比较懒或者比较健忘的,所以python就有with关键字来帮助我们管理上下文。

1. with open('a.txt',mode='rt') as f1:# f1=open('a.txt',mode='rt')

   pass

2. with open('a.txt',mode='rt') as f1,\

open('b.txt',mode='rt') as f2:

res1=f1.read()

res2=f2.read()

print(res1)

三.文件的操作模式

文件的读写操作的模式有

  • r(默认):只读
  • w:只写
  • a:只追加写

文件的读写内容的模式有

t 文本模式:1.读写文件都是以字符串为单位

  2.只能针对文本文件

  3.必须制定encoding参数

b 二进制模式:1.读写文件都是以bytes为单位的

 2.可以针对所有文件

 3.一定不能制定encoding参数 

强调:t和b不能单独使用,必须跟r/w/a连用

各模式的参考案例

1、r(默认的操作模式):

只读模式,当文件不存在时报错,当文件存在时文件指针跳到开始位置

with open('c.txt',mode='rt',encoding='utf-8') as f:
   print('第一次读'.center(50,'*'))
   res=f.read() # 把所有内容从硬盘读入内存
   print(res)
 with open('c.txt', mode='rt', encoding='utf-8') as f:
   print('第二次读'.center(50,'*'))
   res1=f.read()
   print(res1)

实现用户认证功能

inp_username=input('your name>>: ').strip()
 inp_password=input('your password>>: ').strip()
 with open('user.txt',mode='rt',encoding='utf-8') as f:
   for line in f:
     # print(line,end='') # egon:123\n
     username,password=line.strip().split(':') #压缩赋值,取出文件中的用户名密码
     if inp_username == username and inp_password == password:
       print('login successfull')
       break
   else:
     print('账号或密码错误')

应用程序====》文件

应用程序====》数据库管理软件=====》文件

2、w:只写模式,当文件不存在时会创建空文件,当文件存在会清空文件,指针位于开始位置

with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.read() # 报错,不可读
# f.write('擦勒\n') 
# 强调1:
# 在以w模式打开文件没有关闭的情况下,连续写入,新的内容总是跟在旧的之后
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒1\n')
# f.write('擦勒2\n')
# f.write('擦勒3\n')
# 强调2:
# 如果重新以w模式打开文件,则会清空文件内容
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒1\n')
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒2\n')
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write('擦勒3\n')

案例:w模式用来创建全新的文件

文件文件的copy工具

就是读一个文件,再写一个文件,把读的复制给写的。

# src_file=input('源文件路径>>: ').strip()
# dst_file=input('目标文件路径>>: ').strip()
# with open(r'{}'.format(src_file),mode='rt',encoding='utf-8') as f1,\
#   open(r'{}'.format(dst_file),mode='wt',encoding='utf-8') as f2:
#   res=f1.read()
#   f2.write(res)

3、a:只追加写,在文件不存在时会创建空文档,在文件存在时文件指针会直接调到末尾

with open('e.txt',mode='at',encoding='utf-8') as f:
   # f.read() # 报错,不能读
   f.write('1\n')
   f.write('2\n')
   f.write('3\n')

强调 w 模式与 a 模式的异同:

1 相同点:在打开的文件不关闭的情况下,连续的写入,新写的内容总会跟在前写的内容之后

2 不同点:以 a 模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到文件末尾,新写的内容永远写在最后

案例:a模式用来在原有的文件内存的基础之上写入新的内容,比如记录日志、注册

注册功能

name=input('your name>>: ')
 pwd=input('your name>>: ')
 with open('db.txt',mode='at',encoding='utf-8') as f:
   f.write('{}:{}\n'.format(name,pwd))

了解:+不能单独使用,必须配合r、w、a

r+,w+,a+:可读可写

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的yield浅析
Jun 16 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
python选择排序算法实例总结
Jul 01 Python
python实现爬虫下载美女图片
Jul 14 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python实现网站表单提交和模板
Jan 15 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
Python函数基本使用原理详解
Mar 19 #Python
Python ATM功能实现代码实例
Mar 19 #Python
详解django使用include无法跳转的解决方法
Mar 19 #Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 #Python
关于Python turtle库使用时坐标的确定方法
Mar 19 #Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 #Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 #Python
You might like
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
python opencv图片编码为h264文件的实例
2019/12/12 Python
python的sys.path模块路径添加方式
2020/03/09 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
Python爬虫开发与项目实战
2020/12/16 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
大学毕业感言200字
2014/03/09 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
丧事答谢词大全
2015/09/30 职场文书
小学中队长竞选稿
2015/11/20 职场文书
Django实现聊天机器人
2021/05/31 Python