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中的数据存储到系统本地的简单方法
Apr 11 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
python保存字典和读取字典的实例代码
Jul 07 Python
python hough变换检测直线的实现方法
Jul 12 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 Python
Python实现科学占卜 让视频自动打码
Apr 09 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常用Output和ptions/Info函数集介绍
2013/06/19 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
phalcon框架使用指南
2016/02/23 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
Python ftp上传文件
2016/02/13 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
java程序员面试交流
2012/11/29 面试题
程序员跳槽必看面试题总结
2013/06/28 面试题
扬尘污染防治方案
2014/06/15 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
民政局个人整改措施
2014/09/24 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
地震捐款简报
2015/07/21 职场文书
2016年元旦致辞
2015/08/01 职场文书
素质教育学习心得体会
2016/01/19 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
PHP RabbitMQ消息列队
2022/05/11 PHP