Python 第十三节 文件操作
A
1、首先文件读写操作有以下几种模式:
a\a+ w\w+ r\r+
a模式:追加_写入模式,写入指针默认在开头,如果文件存在将在开头追加写入,如果文件不存在将创建文件再写入。
a+模式:追加_读写模式,可读可写,写入指针默认在末尾,如果文件存在将在末尾追加写入,如果文件不存在将创建文件再写入。
w模式:写模式,如果文件存在,把文件覆盖再写入,如果文件不存在将创建文件再写入。
w+模式:写读模式,可写可读,如果文件存在,把文件覆盖再写入,如果文件不存在将创建文件再写入。
r模式:读模式,如果文件存在,可读取文件数据,如果文件不存在读取将会报错。
r+模式:读写模式,可读可写,如果文件存在,可读取或写入文件数据,如果文件不存在读或写取将会报错。
2、而使用以上操作模式可以通过 open() 函数操作文件;
a、以下是open()使用方式
a_file = open('文件路径','操作模式')
例: w模式
a_file = open('testf.txt','w',encoding='utf-8') #这里传入的第一个参数是路径及文件名,第二个参数是文件操作模式,第三个参数是字符编码。
a_file.write('测试写入') #这里使用到 open()的内置函数 write() 通过这个函数可以往里面写入数据,注意:write()传入的是str()字符串。
上面例子,是在当前的目录下打开testf.txt文件并向这个文件里面写入“测试写入”,如果这个当前目录下这个文件不存,
那么将会创建一个文件并写入,如果当前目录已经存在,那么将会打入写入数据并覆盖之前文件。
例:w+模式
a_file = open('testf.txt','w+',encoding='utf-8')
a_file.write('我出现了')
a_file = open('testf.txt','w+',encoding='utf-8')
bf=a_file.read()
print(bf)
执行后结果:
>>>我出现了
通过上面例子,w+是可以写也可以读取文件数据。
例: r模式 与 r+模式
a_file = open('testf.txt','r',encoding='utf-8')
af=a_file.read()
print(af)
>>>我出现了
a_file = open('testf.txt','r+',encoding='utf-8')
a_file.write('我又出现了')#这里直接使用了write写入,直接把‘我出现了’覆写了。在这之前可以,先读文件,之后再写文件,这样就可以在后面追加数据了。
bf=a_file.read()
print(bf)
>>>我又出现了
例: a模式 与 a+模式
a_file = open('testf.txt','a',encoding='utf-8')
a_file.write('我出现了A')
a_file = open('testf1.txt','a+',encoding='utf-8')
a_file.write('创建一个新的文件了')
a_file.seek(0)#文件指针位置,因为a+模式后指针停在末尾,通过seek(0)可以把指针位置调到0位置就是文件的开头。
bf=a_file.read()#如没有上一句代码seek(0),这里将读不到文件
a_file.close()
print(bf) >>>创建一个新的文件了
注意,a、a+ 在数据追加后,文件指针位置就停留在数据的尾端,如果没有seek(0),直接read()读取的话是读取不到数据的。
close() 在这里出现了,close()表示关闭文件句柄对象(这里a_file就是文件句柄对象),在每次文件操作完毕之后都要使用这个函数来闭。
3、with 上下管理理器
使用方式
with open('testw.txt','a+',encoding='utf-8') as f:#这里就直接通过with打开文件,as 是给打开的文件一个别名,这里别名为 f 相当于变量。
a_file.write('创建一个新的文件了')
a_file.seek(0)
bf=a_file.read()
print(bf)
>>>创建一个新的文件了
这里使用的with,每次操作完文件后就不需要close()来关闭文件句柄对象,with内部已经做了处理。
B
1、上面的文件操作方式,如果直接使用来读取图片文件时,将会报错,图片如果通文件方式来打看到是一堆的乱码,这是因为里面都是二进制数据
python 读取二进制文件,可以通过以下方式来读写。
ab rb wb
rb 以二进制读模式打开
wb 以二进制写模式打开
ab 以二进制追加模式打开
rb+ 以二进制读写模式打开
wb+ 以二进制读写模式打开
ab+ 以二进制读写模式打开
例:ab模式
with open('123.png','rb') as f:
a=f.read()
print(a)
这里的操作方式以上述操作一样、
Python 第十三节 文件操作的更多相关文章
- python学习笔记(十)、文件操作
在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得? 1 打开文件 要打开文件,可以使用fileinput中的fileinput.input函数进 ...
- 十四、python沉淀之路--文件操作
一.文件操作b模式 1. # f = open('test11.py','rb',encoding='utf-8') # 这种情况会报错 f = open('test11.py','rb') # b ...
- Python基础7:文件操作
[ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...
- Python基础-week03 集合 , 文件操作 和 函数详解
一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...
- python函数基础 与文件操作
函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...
- Python 第三天 文件操作(2)
文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和 fi ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数
1. 集合 1.1 特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...
随机推荐
- 201521123089 《Java程序设计》第2周学习总结
1. 本周学习总结 ① java数组的使用.② String类,对象是不可变的,当新的字符串的内容与字符串池中的内容相同时,不是重新开辟新的内存存储,而是共享. 2. 书面作业 (1)使用Eclips ...
- Java 最常用类(前1000名) 来自GitHub 3000个项目
这篇文章主要介绍了最常用的1000个Java类(附代码示例),需要的朋友可以参考下 分析Github 3000个开源项目,粗略统计如下.括号内的数字是使用频率 0-3000. 下面的列表显示不全,完整 ...
- linux crontab详解
服务的启动和停止 cron服务是linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start /sbin/service crond ...
- 鸟哥Linux学习笔记04
1, . 当前目录 ..上层目录 2, 目录的相关操作 1)cd(切换目录) [root@node1 ~]# cd [相对路径或绝对路径] [root@node1 ~]# cd : 回到自 ...
- 自己把jar包添加到maven仓库中
定制库到Maven本地资源库 这里有2个案例,需要手动发出Maven命令包括一个 jar 到 Maven 的本地资源库. 要使用的 jar 不存在于 Maven 的中心储存库中. 您创建了一个自定义的 ...
- angular学习笔记02 angular指令大全
第一步 先要引入angular, 第二步 在 html 标签中<html ng-app> 加入ng-app(这是个必须的,不然会报错) 接下来就可以去使用angular的各种指令了. ...
- ThinkPHP中,display和assign用法详解
thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...
- JS中var和let
前 言 JavaScript 大家都知道声明一个变量时,通常会用'var'来声明,但是在ES6中,定义了另一个关键字'let'.今天我就为大家带来'var'与'let'这两个关键字声明有何异同 ...
- 使用JS动态修改网页body的背景色
大部分网页默认的背景色为白色,个人感觉比较刺眼,于是写了个JS的脚本去改变body部分的背景色,代码如下: // ==UserScript== // @name ChangeBackgroundCol ...
- apache一个ip多个端口虚拟主机
1.打开httpd.conf,查找Listen:80,在下面一行加入Listen:8080:2.查找#Include conf/extra/httpd-vhosts.conf,将此行前面的#去掉:3. ...