1. [文件]- 文件类型,文件open模式

1.文件类型:文本文件和二进制文件

  硬盘中的文件保存为01010101格式,一般读取文件是把文件从硬盘中读取到内存中。

  • 文本文件需要进行格式转换才能读取出来。
  • 二进制文件一般用于传输

  

  二进制文件:视频图片

  

 

2.文件打开模式

   

几种不同的读取和遍历文件的方法比较:如果文件很小,read()一次性读取最方便;
如果不能确定文件大小,反复调用read(size)比较保险;
如果是配置文件,调用readlines()最方便。
普通情况,使用for循环更好,速度更快。

  

 

3.r rb读模式 

(1)r 读模式

f = open(file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt',mode='r',encoding='utf-8')
data = f.read()
f.close()

 

file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt'  表示文件路径
mode='r'                                          表示只读(可以修改为其他)
encoding='utf-8'                                  表示将硬盘上的 0101010 按照utf-8的规则去“断句”,再将“断句”后的每一段0101010转换成unicode的 01010101,unicode对照表中有01010101和字符的对应关系。
f.read()                                          表示读取所有内容,内容是已经转换完毕的字符串。
f.close()                                         表示关闭文件

 

  PS: 此处的encoding必须和文件在保存时设置的编码一致,不然“断句”会不准确从而造成乱码。

 

 (2)rb 二进制读模式

  二进制模式,通常用来读取图片、视频等二进制文件。

  注意,它在读写的时候是以bytes类型读写的,因此获得的是一个bytes对象而不是字符串。在这个读写过程中,需要自己指定编码格式。在使用带b的模式时一定要注意传入的数据类型,确保为bytes类型。

  

 

  (3)智能检测编码工具:chardet

# 安装包
C:\Users\liangshuo>pip install chardet# 代码
import chardet
f = open('file_2_gbk.txt',mode='rb' )
data = f.read()
result = chardet.detect(data)
print(result)# 
{'confidence': 1.0, 'encoding': 'ascii', 'language': ''}

 

  

  (4)编码问题

注意:文件操作时,以 “r”或“rb” 模式打开,则只能读,无法写入;
硬盘上保存的文件都是某种编码的0101010,打开时需要注意:
rb,直接读取文件保存时原生的0101010,在Python中用字节类型表示
r和encoding,读取硬盘的0101010,并按照encoding指定的编码格式进行断句,再将“断句”后的每一段0101010转换成unicode的 010101010101,在Python中用字符串类型表示

 

 

4.w wb写模式

 (1)w模式

f = open(file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt',mode='w',encoding='utf-8')
f.write('北大本科美国留学一次50,微信号:xxxxx')
f.close()

 

file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt'     表示文件路径
mode='w'                                             表示只写
encoding='utf-8'                                     将要写入的unicode字符串编码成utf-8格式
f.write(...)                                         表示写入内容,写入的内容是unicode字符串类型,内部会根据encoding转换为制定编码的 01101010101,即:字节类型

 

  (2)wb模式

f = open(file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt',mode='wb')
f.write('北大本科美国留学一次50,微信号:xxxxx'.encode('utf-8'))
f.close()
file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt'      表示文件路径
mode='wb'                                             表示只以2进制模式写
f.write(...)                                          表示写入内容,写入的内容必须字节类型,即:是某种编码格式的0101010

 

  

  (3)编码问题

注意:文件操作时,以 “w”或“wb” 模式打开,则只能写,并且在打开的同时会先将内容清空。写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:wb,写入时需要直接传入以某种编码的0100101,即:字节类型
w 和 encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的 010101010

 

 

5.a ab追加模式

f = open("兼职白领学生空姐模特护士联系方式.txt",'a',encoding="gbk")f.write("\n杜姗姗 北京  167 49 13324523342")
f.close()#
姓名        地区    身高    体重    电话
况咏蜜     北京    171    48    13651054608
......
岳妮妮     深圳    177    54    18835324553
贺婉萱     深圳    174    52    18933434452
叶梓萱    上海    171    49    18042432324
杜姗姗 北京  167 49 13324523342            #这行是添加的
文件操作时,以 “a”或“ab” 模式打开,则只能追加,即:在原来内容的尾部追加内容写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:ab,写入时需要直接传入以某种编码的0100101,即:字节类型
a 和 encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的 010101010

 

 

6.混合模式r+ w+

  (1)r+ 读写模式

f = open('file_2_gbk.txt',mode='r+' )
data = f.read()            # 读内容
print(data)
f.write('\nthis is last')   #写内容
f.close()

  

  (2)w+写读模式(没用)

w+会先把文件清空,再写新内容,
相比w模式,只是支持了一个读功能,且还只能读已经写入的新内容。着实没什么卵用。。。

 

  

7. with关键字

with关键字用于Python的上下文管理器机制。为了防止诸如open这一类文件打开方法在操作过程出现异常或错误,或者最后忘了执行close方法,文件非正常关闭等可能导致文件泄露、破坏的问题。Python提供了with这个上下文管理器机制,保证文件会被正常关闭。在它的管理下,不需要再写close语句。注意缩进。

with open('test.txt', 'w') as f:f.write('Hello, world!')

 

with支持同时打开多个文件:

with open('log1') as obj1, open('log2','w') as obj2:s=obj1.read()obj2.write(s)

 

8.遍历文件

实际上,更多的时候,我们将文件对象作为一个迭代器来使用。

f = open('file_2_gbk.txt',mode='r' )
for line in f:print(line,end='')
f.close()# 
111111111
22222222
33333333
4444444

 这个方法很简单, 不需要将文件一次性读出,但是同样没有提供一个很好的控制,与readline方法一样只能前进,不能回退。

 

 

转载于:https://www.cnblogs.com/venicid/p/8404810.html

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

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

相关文章

c语言鼠标移动响应,CSS鼠标响应事件经过、移动、点击示例介绍

几种鼠标触发CSS事件。说明:onMouseDown 按下鼠标时触发onMouseOver 鼠标经过时触发onMouseUp 按下鼠标松开鼠标时触发onMouseOut 鼠标移出时触发onMouseMove 鼠标移动时触CSS 鼠标响应事件.Off{ background-color: #00FF66; padding:100px;}.up{background-color: …

node安装node-sass失败,配置淘宝源

node-sass 安装失败的原因是因为无法下载 .node 文件,解决办法就很简单了,就是我们把文件下载路径复制一份到浏览器里,然后使用浏览器下载文件就可以了。 具体方法 1.从node命令行中复制 .node文件下载链接并在浏览器打开下载文件https:/…

django 日志配置

django 日志配置 LOGGING { version: 1, disable_existing_loggers: False, formatters: { standard: { format: %(levelname)s %(asctime)s %(pathname)s %(filename)s %(funcName)s %(lineno)d: %(message)s }, # INFO 2016-09-03 16:25:20,067 /home/ubuntu/mysite/views.p…

带有Atomikos示例的Tomcat中的Spring JTA多个资源事务

在本教程中,我们将向您展示如何使用Atomikos Transaction Manager在Tomcat服务器中实现JTA多个资源事务。 Atomicos事务管理器为分布式事务提供支持。 这些是多阶段事务,通常使用多个数据库,必须以协调的方式提交。 分布式事务由XA standard描…

mac vs 返回上一步_mac电脑打不开应用程序的解决方法

mac电脑跟windows电脑一样,经常会出现打不开应用程序的情况,并且提示“因为它来自身份不明的开发者”,也不知道哪里出现问题?由于MAC系统与windows界面不一样,很多小编不懂怎么操作?为此,小编给…

C#DES加密

记录一下 DES加密 public static string DESEncrypt(string Data, string key){return DESEncrypt(Data, key, "utf-8");}/// <summary>/// DES加密算法/// </summary>/// <param name"Data">加密明文</param>/// <param name&…

c语言链表有没有哨兵的区别,链表中的哨兵(sentinel)

哨兵节点广泛应用于树和链表中&#xff0c;如伪头、伪尾、标记等&#xff0c;它们是纯功能的&#xff0c;通常不保存任何数据&#xff0c;其主要目的是使链表标准化&#xff0c;如使链表永不为空、永不无头、简化插入和删除。问题&#xff1a;删除链表中等于给定值val的所有节点…

jquery 获取标签名(tagName)

如果是为了取到tagName后再进行判断&#xff0c;那直接用下面的代码会更方便&#xff1a; $(element).is(input) 如果是要取到标签用作到别的地方&#xff0c;可以使用一下代码&#xff1a; $(element)[0].tagName或&#xff1a;$(element).get(0).tagName 转载请注明&#xff…

番石榴条纹类的细粒度并发

这篇文章将介绍如何使用Guava中的Striped类来实现更细粒度的并发。 ConcurrentHashMap使用条带化锁定方法来增加并发性&#xff0c;并且Striped类通过赋予我们具有条带化Locks &#xff0c; ReadWriteLocks和Semaphores的能力来扩展此主体。 当访问对象或数据结构&#xff08;例…

iOS-----------关于组件化

打一个比较形象的比喻&#xff0c;把APP比作我们的人体&#xff0c;把胳膊、大腿、心、肝、肺这些人体器官比作组件&#xff0c;各个器官分别负责他们各自的功能&#xff0c;但是他们之间也有主次之分&#xff0c;试想我们的胳膊、大腿等是不能独立完成某个任务的&#xff0c;必…

scrapy 安装

直接命令pip install scrapy安装&#xff0c;提示失败 Failed building wheel for Twisted... Microsoft Visual C 14.0 is required...等等 网上搜索一大摞windows下安装scrapy的资料&#xff0c;实践后终于大功告成&#xff0c;现分享出来 1.首先下载scrapy的whl包&#xff1…

leetcode 罗马数字转整数

罗马数字包含以下七种字符&#xff1a;I&#xff0c;V&#xff0c;X&#xff0c;L&#xff0c;C&#xff0c;D 和M。 字符数值I1V5X10L50C100D500M1000例如&#xff0c; 罗马数字 2 写做II &#xff0c;即为两个并列的 1。12 写做XII &#xff0c;即为 X II 。 27 写做 XXVII, …

android 自定义switch控件,Android中switch自定义样式

android 原生开关按钮控件 Switch 提供样式自定义方式&#xff0c;可供我们修改为适合我们开发使用的样式控件&#xff0c;自定义样式过程如下:自定义switch切换drawable新建swith_thumb.xml文件自定义switch轨道drawable新建switch_track.xmln文件,轨迹如果在选中与否过程并没…

具有瞬态属性的视图对象的钝化和激活

在应用程序模块的钝化/激活周期内&#xff0c;框架也会钝化并激活视图对象。 通常&#xff0c;框架保存有关VO状态&#xff0c;当前行&#xff0c;绑定变量值等的信息。 但是没有数据。 激活视图对象后&#xff0c;将重新执行VO的查询&#xff0c;并重新获取数据。 在大多数情况…

jsonobject修改key的值_JSON字符串操作移除空串更改key/value的介绍

对于JSON字符串的操作。移除键值、添加属性。//删除JSON对象value值var json[.....];delete(json[key]);或者delete(json.key);//添加对象objectjson.objectvalue;或者json[object]value;如果数据是查询数据库得到的&#xff0c;那么可能会存在空值&#xff0c;for循环JSON数据…

pre标签的样式

你可能正在使用 <pre> 标签。这是一个 HTML 中非常特别的标签&#xff0c;它允许其中的空格真正显示出来。例如&#xff1a;四个空格将真实显示成四个空格。这不同于其他标签通常的做法&#xff0c;其他标签会将之间的空白压缩成一个。从这一点来说&#xff0c;<pre&g…

从Hotspot JIT编译器打印生成的汇编代码

有时&#xff0c;在对Java应用程序进行性能分析时&#xff0c;有必要了解Hotspot JIT编译器生成的汇编代码。 这对于确定已做出的优化决策以及我们的代码更改如何影响生成的汇编代码非常有用。 在调试并行算法以确保已按预期应用可见性规则时&#xff0c;知道何时发出什么指令也…

js的闭包

function a(){var n 0;this.inc function () {n; console.log(n);}; } var c new a(); c.inc(); //控制台输出1 c.inc(); //控制台输出2 什么是闭包&#xff1f;这就是闭包&#xff01;&#xff01;有权访问另一个函数作用域内变量的函数都是闭包。当函数可以记住并访…

Background-size完美兼容IE

CSS3 新增的 background-size 是一个很有用的属性&#xff0c;用于定义背景图片的尺寸&#xff0c;有了这个属性&#xff0c;你就可以任意指定背景图片的大小。其中最常用的值应该要数 cover 了&#xff0c;该值能让背景图片缩放至填满整个容器&#xff0c;即使是图片面积小于容…

python第五章上机实践报告_第五章实践报告 - osc_kk5bjg1i的个人空间 - OSCHINA - 中文开源技术交流社区...

1.实践问题&#xff1a;工作分配问题2.问题描述设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法&#xff0c;对于给定的工作费用&#xff0c;为每一个人都分配1 件不同的工作&#xff0c;并使总费用达到最小。输入格式:输入数据的第一行有1 个正…