文件操作 - 三元运算/chardet/文件操作r w/文件的操作方法
Alex:读书可以改变一个人的气质
读书:豆瓣; 1年读20本
你的问题:想法太多,读书太少
书:追风筝的人,白鹿原
电影:阿甘正传 辛德勒名单
-------------------------------------------
1.三元运算 = 三目运算
>>> a = 2
>>> b = 5
>>> val = a if a < b else b
>>> val
2
-------------------------------------------
2.文件处理:
找到 打开 读 修改 保存 关闭
f = open(file='D:/**.txt',mode='r',encoding='utf-8') //只读
data = f.read()
f.close()
mode='r' encoding='utf-8' #表示 只读 硬盘上的0101按照utf-8的规则去‘断句’,再将断句后的每一段0101转换成Unicode的01010,Unicode对照表中0101和字符的对应关系。
mode='rb' # 以什么形式存的就以什么形式读 二进制打开 不是给人看的给机器看的 视频 图片 网络传输用的
-----------------------
3.chardet:
问:加入不知道你要处理的文件是什么编码怎么办?用第三方的模块 pip3 install chardet
安装第三方的共工具箱 chardet 检测字符编码
pip3 install chardet //python的chardet的模块安装 C:\Users\bj\AppData\Local\Programs\Python\Python36\Scripts 下面 输入pip3 install chardet
import chardet
f = open(file='联系方式.txt',mode='rb')
data=f.read()
print(data)
---->: b'alex 1233\njack 1243\nrain afd\n\xd6\xd0\xb9\xfa\n\xc3\xc0\xb9\xfa'
f.close()
result = chardet.detect(data)
print(result)
----> {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
print(data.decode('gb2312'))
alex 1233
jack 1243
rain afd
中国
美国
------------------------
4.边读边操作文件
model='r/rb' #整个文件 一次性读到内存中
边读边处理;一点一点读 循环读
f = open('联系方式.txt', mode='r', encoding='gb2312')
for line in f
print(line)
f.close()
-------------------------
5.model = 'w/wb' 创建在写 如果之前同名有文件,就清空了再重写
f = open('联系.txt','w',encoding='utf-8')
f.write("路飞学城")
f.close()
f = open('兼职1.txt', 'wb')
f.write("好孩子1".encode("gbk"))
f.close()
-------------------------
6.追加模式操作文件model='a/ab'
f = open('兼职2.txt','a',encoding='gbk')
f.write("\nalice\nalex")
f.close()
f = open('兼职2.txt','ab')
f.write("\nhello\nworld".encode("gbk"))
f.close()
-------------------------
7.model='r+'读写模式 先读后写 支持往后追加
f = open("联系方式.txt",'r+',encoding='gbk')
print('content:',f.read())
f.write('\nnew 1哈哈')
f.write('\nnew 2哈哈')
print('newcontnet:',f.read()) #因为读文件的光标到了最后
f.close()
-------------------------
8.model='w+'写读模式 以写的模式打开 支持你读 创建了文件,写东西 一般不用
f = open("联系方式.txt",'w+',encoding='gbk')
data = f.read()
print(data)
f.write('\nnew a')
f.write('\nnew b')
f.write('\nnew c')
print('new:',f.read())
f.close()
------------------------
9.文件的其他操作方法:
fileno() 返回文件句柄在内核中的索引值
flush() 把文件从内存buffer里强制刷新到硬盘
readline() 只读一行 遇到\r or \n为止
tell() 返回当前文件操作光标位置 按字节算的
seek(0) 把操作文件的光标移动到指定位置 按字节算的
read(1) 读几个字符 按字节算的
readable() 判断是否可读
seekable() 判断文件是否可进行seek操作
writeable()判断文件是否可写
truncate(6) 按指定定长度截断文件 r+模式 从当前位置往后截断
-------------------------
10.文件修改功能 - 数据被覆盖
# 数据被覆盖 不是往后移 硬盘存储的原理造成的
# word 为什么可以呢 文件全部加载到内存 改完之后在重新写回去
# 如果文件特别大 会把内存撑爆
# 边读边写 一点一点 读到内存 在写回新文件
f = open("联系2.txt", 'r+', encoding='gbk')
f.seek(2)
f.write("我们")
f.close()
-------------------------
11.文件修改占硬盘 - 数据被修改
import os
f_name = '联系方式.txt'
f_new_name = '联系方式new.txt'
old_str = '学诚'
new_str = '大学城大学城'
f = open(f_name, 'r+', encoding='gbk')
f_new = open(f_new_name, 'w', encoding='gbk')
for line in f:
if old_str in line:
line = line.replace(old_str,new_str)
f_new.write(line)
f.close()
f_new.close()
# os.rename(f_new_name,f_name)
os.replace(f_new_name, f_name)
-----------------------------------------------------------------------
总结:
1.三元运算
2.model = 'r/rb'
3.chardet
4.边读边操作文件 s
5.model = 'w/wb'
6.model='a/ab'
7.model='r+'
8.model='w+'
9.文件的其他操作方法
10.文件修改功能
文件操作 - 三元运算/chardet/文件操作r w/文件的操作方法的更多相关文章
- 第三天 函数 三元运算 lambda表达式 内置函数 文件操作
面向过程: 直接一行一行写代码,遇到重复的内容复制黏贴. 不利于代码阅读 代码没有复用 面向对象 将代码块定义为函数,以后直接调用函数 增强了复用性 函数的定义方法 def 函数名(传递参数): 函数 ...
- Python之路第三天,基础(3)-set,函数,内置函数,文件,三元运算,lambda
set集合 集合是一个无序的,不重复的元素集合. 集合的创建: name_set = {'tom','jerry','alex','rose'} 或 name_set = set(['tom','je ...
- 文件操作符|-e|-M|-s|-A|_|-r -w $filename|stat|localtime|&|>>|<<
TTY:终端是一种字符型设备,它有多种类型,通常使用tty 来简称各种类型的终端设备 #!/usr/bin/perl use strict; use warnings; print "exi ...
- python文件读写模式 --- r,w,a,r+,w+,a+,rb,wb
要了解文件读写模式,需要了解几种模式的区别,以及对应指针 r : 读取文件,若文件不存在则会报错 w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件 a : 写入文件,若文件不存在则会先创建再 ...
- Android——Android studio项目中如何查看R.java文件(转)
Android Studio 是Google推出的一个Android开发环境,它集成了Android 开发工具用于开发和调试,类似 Eclipse ADT.Google公司停止对eclipse的后续支 ...
- python基础:python循环、三元运算、字典、文件操作
目录: python循环 三元运算 字符串 字典 文件操作基础 一.python编程 在面向过程式编程语言的执行流程中包含: 顺序执行 选择执行 循环执行 if是条件判断语句:if的执行流程属于选择执 ...
- python3 文件操作练习 r+ w+ a+ 的理解
突然来一句:“慨然有经略四方之志” 文件操作三部曲:1.先用open打开 2.再写关闭 3.再回到中间写操作 为啥要刚打开就关闭 那是很容易望,所以先写上... 基本格式 f = open( ...
- python文件操作r+,w+,a+,rb+,
w:以写方式打开, a:以追加模式打开 (从 EOF 开始, 必要时创建新文件) r+:以读写模式打开 w+:以读写模式打开 (参见 w ) a+:以读写模式打开 (参见 a ) rb:以二进制读模式 ...
- R语言文件相关的操作
1. 文件系统介绍 R语言对文件系统的操作,包括文件操作和目录操作,函数API都定义在base包中. 2. 目录操作 2.1 查看目录 查看当前目录下的子目录. # 启动R程序 ~ R # 当前的目录 ...
随机推荐
- 关于引脚复用,不得不提的GPIO_Pin_sources 和GPIO_Pin
今天在端口复用时遇到了困惑,参考:http://www.51hei.com/bbs/dpj-40992-1.html 调整前的代码GPIO_PinAFConfig(GPIOA,GPIO_Pin_9,G ...
- Android CoordinatorLayout 入门介绍
Android CoordinatorLayout 入门介绍 CoordinatorLayout View 知道如何表现 在 2015 年的 I/O 开发者大会上,Google 介绍了一个新的 And ...
- GEEK学习笔记— —程序猿面试宝典笔记(二)
所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr ...
- C# 时间格式 yyyy/mm/dd
今天遇到个问题在C#中将日期格式设置为yyyy/MM/dd,我是这样写的: DateTime.Now.ToString("yyyy/MM/dd"); 可是获取到的日期还是显示yyy ...
- FlashBuilder 4.6序列号破解
1424-4827-8874-7387-0243-7331 1424-4938-3077-5736-3940-5640 具体步骤如下: 1.到Adobe官网下载FlashBuilder 4.6,有简体 ...
- 第一百四十二节,JavaScript,封装库--运动动画和透明度动画
JavaScript,封装库--运动动画和透明度动画 /** yi_dong_tou_ming()方法,说明 * * yi_dong_tou_ming()方法,将一个元素,进行一下动画操作 * 1,x ...
- java.awt包提供了基本的java程序的GUI设计工具
java.awt包提供了基本的java程序的GUI设计工具.主要包括下述三个概念: 组件--Component 容器--Container 布局管理器--LayoutManager package T ...
- HTML表单页面的运用
本章目标:掌握表单基本结构<form> 掌握各种表单元素 能理解post和get两种提交方式的区别 本章重点:掌握各种表单元素 本章难点:post和get两种提交方式的区别 一. H ...
- Java实现验证码的制作
验证码概述 为什么使用验证码? 验证码(CAPTCHA)是一种全自动程序.主要是为了区分“进行操作的是不是人”.如果没有验证码机制,将会导致以下的问题: 对特定网站不断进行登录,破解密码: 对某个网站 ...
- 【vijos】1769 网络的关键边(割边)
https://vijos.org/p/1769 啊,割边写挫了害得我交了那么多发... 本题多想想就出来了.. 首先求出割边,显然关键边就在割边上. 求完割边后,我们先从一个点dfs,维护A的点数和 ...