2 python第三章文件操作
1、三元运算
三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立:
val = 1
else:
val = 2
改成三元运算: val = 1 if 条件成立 else 2
2、简体中文Windows操作系统中,ANSI 编码代表 GBK 编码
在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码 记事本默认是以ANSI编码保存文本文档的,而正是这种编码存在的bug招致了上述怪现象。假如保存时选择Unicode、Unicode (Big Endian)、UTF-8编码,就正常了。
此外,假如以ANSI编码保存含有某些特别符号的文本文档,再次打开后符号也会变成英文问号。
如果不知道文本模式的编码格式,需要读取时,mode='rb',二进制模式,数据读到内存里直接是bytes格式(字节类型),如果想内容,还需要手动decode,
需要下载pip3
问:假如你不知道你要处理的文件是什么编码可怎么办呢? import chardet f = open('log',mode='rb')
data = f.read()
f.close() result = chardet.detect(open('log',mode='rb').read())
print(result)
输出: {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
注意: 文件操作时,以 “r”或“rb” 模式打开,则只能读,无法写入;
硬盘上保存的文件都是某种编码的0101010,打开时需要注意:
rb,直接读取文件保存时原生的0101010,在Python中用字节类型表示
r和encoding,读取硬盘的0101010,并按照encoding指定的编码格式进行断句,再将“断句”后的每一段0101010转换成unicode的 010101010101,在Python中用字符串类型表示
3、循环文件
循环文件:
为避免读取文件过多占内存,可以循环文件一次取一行 file = open('test.txt','r+',encoding='utf-8')
f = file.readlines()
for i in f:
print(i)
文本中无换行,这样读取出现换行 整个读取直接读取该不会变:f = file.read() 单个执行时:’1,Alex Li,22,13651054608,IT,2013-04-01\n'
print会执行字符串自带的换行符 1,Alex Li,22,13651054608,IT,2013-04-01 2,Jack Wang,28,13451024608,HR,2015-01-07 3,Rain Wang,21,13451054608,IT,2017-04-01 4,Mack Qiao,44,15653354208,Sales,2016-02-01 消除 输出的 空行:
for i in f:
#strip() #方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
i = i.strip()
print(i)
4、写入与读取的编码格式必须相同
f = open('test.txt','wb')
f.write('hao'.encode('gbk'))
这种
所以如果写入的是二进制,那么打开文件的时候也需要以二进制的形式打开。
5、tell、seek,truncate()、找的是字节
tell,seek 找的字节
read(size) 字符
清空文件truncate() 按字节
def modify_text():
with open('test.txt', "r+") as f:
read_data = f.read()
f.seek(0)
f.truncate() #清空文件
f.write(read_data.replace('apple', 'android'))
def truncate(self, *args, **kwargs): # real signature unknown
按指定长度截断文件
f.truncate(size)指定长度的话,就从文件开头开始截断指定长度,
f.truncate()
不指定长度的话,就从光标当前位置到文件尾部的内容全去掉。上题中光标在文本末尾
6、对文件增删改查
对文件操作增删改查 如果采用 file = open(),这种方式,一定要加 file.close(),不然操作会出错 with open() as file 不需要 加 file.close()
空格是指一行中有除了空格还有其余的字符,空行是指这行除了换行符没有其他的操作符,而文件的结束符都是空。 这些区别也成为了文件处理他们的关键, 判断空行是用‘\n’,判断结束符是用‘’(python代表空),判断空格是用‘ ’。 判断空行:
f = file.readlines() #读取文本所有内容,并且以列表的格式返回结果
for i in f:
if i == '\n':
i = i.strip('\n')
6.1、file.seek()语法
1.作用:用于移动文件读写指针到指定位置
2.语法:file.seek(offset,whence=0)# 括号里面有两个参数whence默认为0
-->offset:偏移量,需要向前或向后移动的字节数,正往结束方向移动,负往开始方向移动。
-->whence:可选值,默认为0,这意味着绝对的文件定位,
1这意味着寻求相对于当前位置,
2表示相对于文件的末尾。
x.tell() #显示当前游标位置在文件开头
x.seek(3) #移动3个字节,whence没有设置默认为从文件开头开始
x.seek(5,1) #移动5个字节,1代表从当前位置开始
seek(0),相当于 移动0个字节,whence 没有则默认为从文件开头开始
seek(1) 从文件开头移动1个字节,whence没有默认为0,即从文件开头位置
7、修改文件 占硬盘和占内存
修改文件 占硬盘
一个文件读取,一个文件写,完成后把替换旧的文件名 把修改后的数据写到另一个文件里面
例子1:
file = open('test.txt','r',encoding='utf-8')
new_file = open('new_test.txt','w',encoding='utf-8')
print(file.read())
for line in file:
if 'Alex' in line:
line = line.replace('Alex','lele')
if line == '\n':
line = line.strip('\n') #删除 原文件中的 空行
# 这样存入新文件原有不同行的数据都会在同一行显示
#line = line.strip() #(移除默认为空格或换行符)每一行
new_file.write(line)
file.close()
new_file.close()
# 如果想把原文件 读取出来修改后生成的新文件 (原文件的内容没有发生变化)
# 此时想把新文件替换掉就的原文件 , 用重命名的方法
import os #写在开头 os.replace(new_file,file) #写在结尾 #把新文件名字改成原文件 的名字,就把之前的覆盖掉了
# ,windows使用os.replace # 帮助文档说明replace会覆盖原文件linux使用 os.rename

ctrl+a 可以清晰,看覆盖多少行,可以直观看出总共11行,1行是空行!
可以非常直观的看文件里面是否有空行
# 占内存的方式修改 并更新文件
data_list = []
file = open('test.txt','r+',encoding='utf-8')
f = file.readlines()
print(len(f)) # 判断有多少行
for line in f:
if 'Alex' in line:
line = line.replace('Alex','lele')#(old ,new)
if line == '\n':#删除文本中的空行
line = line.strip('\n')
data_list.append(line)
# 删除原文件的内容
file.seek(0)
file.truncate()
for line in data_list:
# 上一个for循环并没有删除每一行自带的换行符,所以写入时不需要加换行符
file.write(line)
file.close()
2 python第三章文件操作的更多相关文章
- Python 第三天 文件操作(2)
文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和 fi ...
- Python(三)——文件操作
在我们用语言的过程中,比如要往文件内进行读写,那么势必要进行文件操作,那么咋操作呢?用眼睛直接看么?今天就定个小目标,把文件读写那些事扯一扯 文件操作 把大象放进冰箱分几步? 第一步:打开冰箱 第二步 ...
- python入门三:文件操作
一.文件操作 1.文件对象:和c一样,要想对一个文件进行操作,需要获取该文件的对象 f = open("xxx") # 打开文件并获取文件对象 f.xxx # 对文件进行某些操作 ...
- 分分钟钟学会Python - 第四章 文件操作
4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') obj.write() # 写入 obj.read() # 读取 obj.close() #关闭 ...
- 简学Python第三章__函数式编程、递归、内置函数
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 第三章 JavaScript操作BOM对象
第三章 JavaScript操作BOM对象 一.window对象 浏览器对象模型(BOM)是javascript的组成之一,它提供了独立与浏览器窗口进行交换的对象,使用浏览器对象模型可以实现与HT ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- Python之路:Python 基础(三)-文件操作
操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') # 还有一种方法open 例1.创建文件 f = file('myfile. ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
随机推荐
- spring 核心思想:AOP 理解
什么是AOP? AOP概念介绍 所谓AOP,即Aspect orientied program,就是面向方面(切面)的编程. 面向切面编程Aspect-Orlented-Programming,即AO ...
- yarn 知识点
yarn 与 npm 功能对应表格: 命令 yarn npm 初始化 yarn init npm init 安装项目所有包(注意) yarn npm install 添加 dependencies y ...
- mysql的一些 参数查询
1 查询 事务 超时时间: SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout'; (默认innodb引擎事务的超时时间) 2 查询事务隔离级别 ...
- POJ3208魔鬼数
题目:http://poj.org/problem?id=3208 与一般的数位dp有点不同的是,没有给出上界,而是要通过值来判断这一位该填什么. 当然是从高位向低位填. 为了知道这一位填下去对答案有 ...
- Jsp Session
1. Session的定义 Session用于跟踪客户的状态. Session指的是在一段时间内,单个客户与Web服务器的一连串相关的交互过程.在一个Session中 ,客户可能多次请求访问同一个网页 ...
- Angular 4 http通讯 解决服务器参数无法接收问题
1.导入 import { Component, OnInit } from '@angular/core'; import {Observable} from 'rxjs/Observable'; ...
- Maven 项目报告插件
Maven 项目报告插件,都是对于前面生成的项目站点的内容丰富,因此都是基于项目站点的,生成的命令和生成项目站点一致(mvn site),项目报告插件的配置和一般插件不同,是在 project-> ...
- 阿里巴巴Java开发手册-并发处理
1. [强制]获取单例对象需要保证线程安全,其中的方法也要保证线程安全.说明:资源驱动类.工具类.单例工厂类都需要注意. 2. [强制]创建线程或线程池时请指定有意义的线程名称,方便出错时回溯.正例: ...
- 更改默认打开wifi功能
一.打开以下目录 /home/tingpan/openwrt/barrier_breaker/package/kernel/mac80211/files/lib/wifi 找到mac80211.sh ...
- nginx搭建负载均衡
负载均衡:针对web负载均衡简单的说就是将请求通过负债均衡软件或者负载均衡器将流量分摊到其它服务器. 负载均衡的分类如下图: 今天分享一下nginx实现负载均衡的实现,操作很简单就是利用了nginx的 ...