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 第十三节 文件操作的更多相关文章

  1. python学习笔记(十)、文件操作

    在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得? 1 打开文件 要打开文件,可以使用fileinput中的fileinput.input函数进 ...

  2. 十四、python沉淀之路--文件操作

    一.文件操作b模式 1. # f = open('test11.py','rb',encoding='utf-8') # 这种情况会报错 f = open('test11.py','rb') # b ...

  3. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  4. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  5. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  6. Python 第三天 文件操作(2)

    文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  fi ...

  7. python学习笔记4(文件操作)

    文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”)      直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...

  8. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  9. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...

随机推荐

  1. 201521123073《Java程序设计》第2周学习总结

    1. 本周学习总结 1.学习了枚举类型的应用: 枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样. public enum Season ...

  2. 201521123065《java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 1.多线程的临界资源:启动多个线程同时运行时,需要同时访问共同的资源,导致结果的不正确性: 2.原子性操作:只进行 ...

  3. Java 第十四周总结

    1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 2. 使用JDBC连接数据库与Statement 2.1 使用Statement操作数据库.(粘贴一段你认为比较有价值的代码,出现学 ...

  4. 201521123104《java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  5. 你不知道的JavaScript——类型

    一.ECMAScript语言中所有的值均有一个对应的语言类型.ECMAScript语言类型包括Undefined.Null.Boolean.String.Number和Object. 我们这样来定义类 ...

  6. Exception in thread "main" org.hibernate.TransientObjectException: object references an unsaved tran

    今天在使用一对多,多对一保存数据的时候出现了这个错误 Hibernate错误: Exception in thread "main" org.hibernate.Transient ...

  7. appium实例编写(1)---以ContactsTest.apk 操作为例

    详情参照   http://www.cnblogs.com/puresoul/p/4696825.html#3326873   自己练习一遍 前言: appium环境搭建参照另一篇博客:http:// ...

  8. Java学习笔记一---JVM、JRE、JDK

    jdk包含jre,jre包含jvm. 用java语言进行开发时,必须先装jdk: 只运行java程序,不进行开发时,可以只装jre. JVM 即Java Virtual machine,Java虚拟机 ...

  9. arm-linux-gcc 4.3.2编译uboot 1.1.6

    在第三期项目的视频中,官方提供了一整套新的工具链,bootloader, 内核和文件系统(arm-linux-gcc_4.3.2, uboot-2012.04.01, linux-3.4.2)其中ub ...

  10. JAVA实现上传文件到服务器、删除服务器文件

    使用的jar包: <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</art ...