third day- 01--文件操作

 1 1、请分别介绍文件操作中不同的打开方式之间的区别:
 2 
 3 模式 含义
 4 r       文本只读模式
 5 rb       二进制模式  #这种方法,是用来传输或存储,不给人看的。
 6 r+      r+ 是读写模式,只要沾上r,文件必须存在
 7 rb+      二进制读写模式
 8 w       w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写
 9 wb      和wb 两种模式
10 w+      w+ 是读写内容,只要沾上w,肯定会清空原来的文件
11 wb+     二进制写读模式
12 a       a 追加模式,也能写,在文件的末尾添加内容
13 ab      二进制追 加模式
14 a+
15 ab+
16 '''
从别处拷贝

 

 

1.文件操作基本流程

#1. 打开文件,得到文件句柄并赋值给一个变量
f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r#2. 通过句柄对文件进行操作
data=f.read()#3. 关闭文件
f.close()
护士主妇空姐老师联系方式.txt1,文件路径2,编码方式:utf-83,动作mode,读,读写,写读.....f1 = open('D:\空姐护士老师主妇.txt', encoding='utf-8', mode='r')content = f1.read()print(content)f1,文件句柄,文件对象,file,f_handle,file_handle,f_objopen打开的指令,windows的指令,windows 默认编码方式gbk,linux默认编码方式utf-8,mac utf-81,打开文件,产生文件句柄。2,操作文件句柄。3,关闭文件。
注意:SyntaxError: (unicode error) 'unicodeescape' codeccan't decode bytes in position 2-3: truncated \UXXXXXXXX escapef1 = open(r'D:\空姐护士老师主妇.txt', encoding='utf-8', mode='r')# f1 = open('D:\\空姐护士老师主妇.txt', encoding='utf-8', mode='r')EncodeDecodeErorr: 编码错误。
View Code

调用文件的两个小例子

#相对路径下,不用写路径,可以直接写文件名
# f1=open('123.py',encoding='utf-8',mode='r')  #mode可以不写,默认读
# content=f1.read()  #read全部读出
# print(content)
# f1.close()
#绝对路径下
# f1=open('F:\\Python自动化21期\\day03\\1.txt',encoding='utf-8') #注意路径是\\,否则会报错
# content=f1.read()
# print(content)
# f1.close()
View Code

2.文件打开模式

文件句柄 = open(‘文件路径’,‘模式’)

rb模式 非文字类的文件的操作。不写encoding

unicode ---> bytes encode()
bytes---> unicode decode()

1 #编码的补充:\
2 # s1 = b'\xd6\xd0\xb9\xfa'
3 # s2 = s1.decode('gbk')
4 # s3 = s2.encode('utf-8')
5 # print(s3)  # b'\xe4\xb8\xad\xe5\x9b\xbd'
6 # s1 = b'\xd6\xd0\xb9\xfa'.decode('gbk').encode('utf-8')  简化写法
7 # print(s1)
编码的补充
 
#1. 打开文件的模式有(默认为文本模式):
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】#2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
rb 
wb
ab
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码#3,‘+’模式(就是增加了一个功能)
r+, 读写【可读,可写】
w+,写读【可写,可读】
a+, 写读【可写,可读】#4,以bytes类型操作的读写,写读,写读模式
r+b, 读写【可读,可写】
w+b,写读【可写,可读】
a+b, 写读【可写,可读】
View Code

3.文件操作

read(3):1. 文件打开方式为文本模式时,代表读取3个字符2. 文件打开方式为b模式时,代表读取3个字节其余的文件内光标移动都是以字节为单位的如:seek,tell,truncate注意:1. seek有三种移动方式0,12,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果。
View Code

 

1.read 全部读取

read(n) 按照字符读取

readline()按行读取

readlines() 将每一行作为列表的一个元素并返回这个列表

for循环

# read 全部读出
# f1 = open('log1', encoding='utf-8')
# content = f1.read()  #
# print(content)
# f1.close()#read(n)
# f1 = open('log1', encoding='utf-8')
# content = f1.read(5)  # r 模式 按照字符读取。
# print(content)
# f1.close()# f1 = open('log1', mode='rb')
# content = f1.read(3)  # rb模式 按照字节读取。utf-8编码,写4会报错
# print(content.decode('utf-8'))
# f1.close()#readline()按行读取
# f1 = open('log1', encoding='utf-8')
# print(f1.readline())
# print(f1.readline())
# print(f1.readline())
# print(f1.readline())
# f1.close()#readlines() 将每一行作为列表的一个元素并返回这个列表
# f1 = open('log1', encoding='utf-8')
# print(f1.readlines())
# f1.close()#for循环  最好只占一行空间,直接read占用内存
# f1 = open('log1', encoding='utf-8')
# for i in f1:
#     print(i)
# f1.close()
View Code

#r+ 读写

#w模式  覆盖之前的内容重新写入输入的内容
 w+写读模式  清空之前内容写入
a 追加写
 1 # r+读写
 2 # f1=open('123.py',encoding='utf-8',mode='r+')
 3 # print(f1.read())
 4 # f1.write('666')  #在文件的最后一行后面写入了666
 5 # f1.close()
 6 
 7 # f1=open('123.py',encoding='utf-8',mode='r+')
 8 # f1.seek(0,2) #调至最后,按照字节去调整光标
 9 # f1.write('777')
10 # f1.seek(0)  #调整光标  不写打印出内容为空!
11 # print(f1.read())
12 # #光标 按照字节去运转 seek
13 # f1.close()
14 
15 #w模式  覆盖之前的内容重新写入输入的内容
16 #w和wb区别????于非文本文件,我们只能使用b模式
17 # f1=open('123.py',encoding='utf-8',mode='w')
18 # f1.write('你真美,,')
19 # f1.close()
20 # f1=open('123.py',mode='wb')
21 # f1.write('1234567q释放'.encode('utf-8'))
22 # f1.close()
23 
24 #  # w+写读模式  清空之前内容写入
25 # f1=open('123.py',encoding='utf-8',mode='w+')
26 # print(f1.read())  #清空之前内容
27 # f1.write('666')  #写入
28 # f1.seek(0)  #展示写入的内容,加这两行
29 # print(f1.read())  #展示写入的内容,加这两行
30 # f1.close()
31 
32 #a 追加写 ab
33 # f1=open('123.py',encoding='utf-8',mode='a')
34 # f1.write('1234')
35 # f1.close()
36 # ab????于非文本文件,我们只能使用b模式
37 #a+  可以读取
38 # f1=open('123.py',encoding='utf-8',mode='a')
39 # f1.write('lijie')
40 # f1.seek(0)
41 # print(f1.read())
42 # f1.close()
View Code

2.其它操作方法

 1 #其他操作方法:
 2 #read read(n) readline() readlines() write() close
 3 # readable??是否可读
 4 # writable??是否可写
 5 #tell 告诉指针的位置
 6 # f1=open('123.py',encoding='utf-8',mode='w')
 7 # f1.write('你真美1')
 8 # print(f1.tell())
 9 # f1.close()
10 #seek(参数),seek(0,2) 调至最后 按照字节去调整光标
11 
12 # 不手动关闭文件方法  with open() as:
13 # with open ('123.py',encoding='utf-8',mode='r') as f1,\
14 #         open ('2.py',encoding='utf-8',mode='w') as f2: #文件不存在时自动创建
15 #     print(f1.read())
16 #     f2.write('234')
View Code

4.文件的改

 1 #文件的改
 2 #1,打开原文件,产生文件句柄。
 3 #2,创建新文件,产生文件句柄。
 4 #3,读取原文件,进行修改,写入新文件。
 5 #4,将原文件删除。
 6 #5,新文件重命名原文件。
 7 
 8 # import os
 9 # with open('file_test', encoding='utf-8') as f1,\
10 #     open('file_test.bak', encoding='utf-8', mode='w') as f2:
11 #     old_content = f1.read()#此方法全部读取,不好
12 #     new_content = old_content.replace('alex','SB')
13 #     f2.write(new_content)
14 # os.remove('file_test')
15 # os.rename('file_test.bak','file_test')
16 
17 
18 import os
19 with open('file_test', encoding='utf-8') as f1,\
20     open('file_test.bak', encoding='utf-8', mode='w') as f2:
21     for line in f1:  #for循环未结束一直在持续写,所以不覆盖
22         new_line = line.replace('SB','alex')
23         f2.write(new_line)
24 os.remove('file_test')
25 os.rename('file_test.bak','file_test')
文件的改

 5.复习

 1 # 文件操作
 2     # 打开文件
 3         # f = open('文件路径')  默认的打开方式r ,默认的打开编码是操作系统的默认编码
 4         # r w a (r+ w+ a+) 以上6种加b  ,如果打开模式+b,就不需要指定编码了
 5         # 编码 UTF-8 ,gbk
 6     # 操作文件
 7         # 读
 8             # read 不传参数 意味着读所有
 9                 # 传参,如果是r方式打开的,参数指的是读多少个字符
10                 # 传参,如果是rb方式打开的,参数指的是读多少个字节
11             # readline
12                 # 一行一行读  每次只读一行,不会自动停止
13             # for循环的方式
14                 # 一行一行读  从第一行开始 每次读一行 读到没有之后就停止
15         # 写
16             # write 写内容
17     # 关闭文件
18         # f.close()
19     # with open() as f:
20     # 修改文件 :
21         # import os
22         # os.remove
23         # os.rename
View Code

 

转载于:https://www.cnblogs.com/lijie123/p/8856840.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序中form 表单提交和取值实例详解

2019独角兽企业重金招聘Python工程师标准>>> 我们知道&#xff0c;如果我们直接给 input 添加 bindinput&#xff0c;比如&#xff1a;<input bindinput"onUsernameInput" />&#xff0c;那么可以在 onUsernameInput 中直接使用 e.detail.value&…

matlab如何用代码导入文件_20+行Matlab代码实现文件扫描

最近刚好看到一篇回答&#xff0c;用阈值二值化处理图片水印&#xff0c;受到启发写此代码。阈值二值化适合处理只有黑白两色的图片&#xff0c;考虑到文件盖章&#xff0c;这里作者使用像素颜色替换及灰度值处理图片&#xff0c;进一步提高处理精度和能力。我们需要&#xff1…

启动django服务器报错raise errorclass(errno, errval) django.db.utils.InternalError

问题描述&#xff1a; 启动django服务器python manage.py runserver报错: raise errorclass(errno, errval) django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE7\x94\xA8\xE6\x88\xB7’ for column ‘name’ at row 1”) 原因&#xff1a;与mysql数据库…

java单例模式之线程安全问题

单例的目的是为了保证运行时Singleton类只有唯一的一个实例&#xff0c;用于一些较大开销的操作。 饿汉式&#xff08;没有线程安全问题&#xff09;: ‘ 由于使用static关键字进行了修饰&#xff0c;只能获取到一个对象&#xff0c;从而达到了单例&#xff0c;并且在Singleton…

448. Find All Numbers Disappeared in an Array 寻找有界数组[1,n]中的缺失数

&#xff3b;抄题&#xff3d;&#xff1a; Given an array of integers where 1 ≤ a[i] ≤ n (n size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it with…

Linux基本命令+Makefile

1.linux下查看进程占用cpu的情况(top)&#xff1b; 格式 top [&#xff0d;] [d delay] [q] [c] [S] [s] [i] [n] 主要参数 d&#xff1a;指定更新的间隔&#xff0c;以秒计算。q&#xff1a;没有任何延迟的更新。如果使用者有超级用户&#xff0c;则top命令将会以最高的优先…

mysql语法题_mysql数据库题语法练习

一、练习。导入下面sql执行语句/*数据导入&#xff1a;Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50624Source Host : localhostSource Database : sqlexamTarget Server Type : MySQLTarget Server Version …

OpenGL开发库的详细介绍

OpenGL开发库的组成 开发基于OpenGL的应用程序&#xff0c;必须先了解OpenGL的库函数。它采用C语言风格&#xff0c;提供大量的函数来进行图形的处理和显示。OpenGL库函数的命名方式非常有规律。所有OpenGL函数采用了以下格式<库前缀><根命令><可选的参数个数&g…

thinkphp5运行原理_ThinkPHP5.1~5.2全版本远程代码执行高危漏洞预警

漏洞综述关于ThinkPHPThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架&#xff0c;其借鉴了国外很多优秀的框架和模式&#xff0c;包括使用面向对象的开发结构和MVC模式&#xff0c;融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式等。该框架常…

ASP.NET MVC中controller和view相互传值的方式

ASP.NET MVC中Controller向view传值的方式&#xff1a; ViewBag、ViewData、TempData单个值的传递Json匿名类型ExpandoObjectCookieViewModel(向普通View页面传个Model对象、向强类型页面传一个Model对象、用一个ViewModel对象解决所有问题)ASP.NET MVC中view向Controller传值的…

Linux内核中的常用宏container_of其实很简单【转】

转自&#xff1a;http://blog.csdn.net/npy_lp/article/details/7010752 开发平台&#xff1a;Ubuntu11.04 编 译器&#xff1a;gcc version 4.5.2 (Ubuntu/Linaro4.5.2-8ubuntu4) Container_of在Linux内核中是一个常用的宏&#xff0c;用于从包含在某个结构中的指针获得结构本…

mysql concat例子_MYSQL中CONCAT详解

concat()函数1. 功能&#xff1a;返回结果为连接参数产生的字符串。如有任何一个参数为NULL &#xff0c;则返回值为 NULL。2. 语法concat(str1, str2,...)3. 例子案例一&#xff1a;mysql> select concat(苹果,香蕉,梨子);------------------------------| CONCAT(苹果,香蕉…

mysql php7安装配置_centos7无网络下安装部署php7.1.33+mysql5.7.28+apache2.4.6-Go语言中文社区...

centos7无网络下安装部署php7.1.33mysql5.7.28apache2.4.6一、1、先ping www.baidu.com&#xff0c;root账户下&#xff0c;如果未联网&#xff0c;创建目录&#xff0c;把提前下载好的rpm包拷贝到rpm目录下如图&#xff1a;(如果没有安装包请查看我的另一篇教程下载这些安装包…

webkit渲染

2019独角兽企业重金招聘Python工程师标准>>> 参考链接 理解WebKit和Chromium 简明魔法学院 Chrome软件渲染 WebKit渲染基础 Webkit 渲染基础 Webkit不是浏览器,它是一个渲染引擎 软件渲染 硬件渲染(GPU加速) 会触发GPU加速的属性 CSS3 3D transformation, trans…

element ui中dialog相关问题

一&#xff0c;今天需要在dialog里面引入另一个页面&#xff0c;就是打开dialog显示该页面&#xff08;把页面放到dialog中&#xff09;&#xff0c;引入的语句如下&#xff1a; <iframe src"view?pathrkdj_b" ></iframe> 二&#xff0c;使用table组件时…

spark java教程_(Spark)学习进度十四(Spark之Java独立应用编程)

环境如下:(更新了林子雨教程中不可使用的部分) Hadoop 2.6.0以上 java JDK 1.7以上 Spark 3.0.0-preview2 二、java独立应用编程(在下载依赖jar包的过程中如遇到卡顿现象可以Ctrl+C停止下载,然后重新执行本条命令即可继续下载相应的依赖jar包) 1、安装maven ubuntu中没有自带…

[零基础学JAVA]Java SE应用部分-34.Java常用API类库

本季目标1、StringBuffer类 2、Runtime 类 3、包装类与JDK 1.5的新特性——泛型 4、日期的操作类 5、Math类 6、Random类1、StringBuffer&#xff08;重点&#xff09; String 类的时候说过&#xff1a;String 类的内容一旦声明则不可改变&#xff0c;改变的只是其地址。…

我所理解的机器学习

各位请移步到【http://www.cnblogs.com/cchHers/p/8945908.html】转载于:https://www.cnblogs.com/cchHers/p/8933042.html

protobuf java文档_Java中使用Protobuf

gradle依赖库&#xff1a;implementation com.google.protobuf:protobuf-java:3.4.0implementation com.google.protobuf:protobuf-java-util:3.4.00.编写.proto文件&#xff0c;编译生成对应Java源文件&#xff1a;syntax "proto2";option java_generic_services …

多租户表设计

2019独角兽企业重金招聘Python工程师标准>>> multi-tenant-databases-in-the-cloudtips-amp-tricks-to-build-multi-tenant-databases-with-sql-databases团队开发框架实战—多租户支持转载于:https://my.oschina.net/yangjiandong/blog/1612626