python 07
1.文件操作:
f=open(...) 是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了 操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。 #这就用到了上节课讲的字符编码的知识:若要保证不乱码,文件以什么方式存的,就要以什么方式打开。 f=open('a.txt','r',encoding='utf-8')
#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, 写读【可写,可读】
read(3): 1. 文件打开方式为文本模式时,代表读取3个字符 2. 文件打开方式为b模式时,代表读取3个字节 其余的文件内光标移动都是以字节为单位的如:seek,tell,truncate 注意: 1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的 2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果。
文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式: 方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器) 复制代码 import os # 调用系统模块 with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: data=read_f.read() #全部读入内存,如果文件很大,会很卡 data=data.replace('alex','SB') #在内存中完成修改 write_f.write(data) #一次性写入新文件 os.remove('a.txt') #删除原文件 os.rename('.a.txt.swap','a.txt') #将新建的文件重命名为原文件

import os with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: for line in read_f: line=line.replace('alex','SB') write_f.write(line) os.remove('a.txt') os.rename('.a.txt.swap','a.txt')

方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件 复制代码 import os with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: for line in read_f: line=line.replace('alex','SB') write_f.write(line) os.remove('a.txt') os.rename('.a.txt.swap','a.txt')
2.数据类型的转换!
数自转bool N = bool(1) True N = bool(-1) true N = bool(0) flase n = int(true) 1 n = int(flase) 0 字符串转bool 字符串只要不是空的,其bool都是True s = "zhong" s1 = bool(s) print(s1) True 其他类型转bool 列表,元组,集合,字典,等只要不是空的转为字符串都是True 字符串转其他类型 字符串转列表 s = "zhong" s1 = list(s) print(s1) ['z', 'h', 'o', 'n', 'g'] s = "zhong xxx"x= s.split(" ") print(x) ['zhong', 'xxx'] 字符串转元组 s = "zhong" s1 = tuple(s) print(s1) ('z', 'h', 'o', 'n', 'g') 字符串转字典 di = { } s = "zhong"for i in s: di.setdefault(i) print(di) {'z': None, 'h': None, 'o': None, 'n': None, 'g': None} 字符串转集合 s = "zhong" s1 = set(s) print(s1) {'g', 'n', 'h', 'o', 'z'} 字符串转int s = "s1 = int(s) print(s1) 2 字典转其他类型 字典转字符串 di = {"中国":"北京","河南":"郑州"} s1 = str(di) print(type(s1)) <class 'str'> 字典转列表 di = {'中国':'北京','河南':'郑州'} x = list(di) print(x) ['中国', '河南'] 字典转集合 di = {'中国':'北京','河南':'郑州'} x = set(di) print(x) {'中国', '河南'} 字典转元组 di = {'中国':'北京','河南':'郑州'} x = tuple(di) print(x) {'中国', '河南'} 列表转其他类型 列表转字典 di = ['中国','北京','河南','郑州'] x = dict(di) print(x) {'中': '国', '北': '京', '河': '南', '郑': '州'} ##报错!!!!!! di = ['中','国','北','京','河南','郑州'] x = dict(di) print(x) di = ['中国北京','河南郑州'] x = dict(di) print(x) 列表转字符串 di = ['中国','北京','河南','郑州'] x = "".join(di) print(x) 中国北京河南郑州 列表转元组 di = ['中国','北京','河南','郑州'] x = tuple(di) print(x) ('中国', '北京', '河南', '郑州') 列表转集合 di = ['中国','北京','河南','郑州'] x = set(di) print(x) {'北京', '中国', '河南', '郑州'} 元组转其他类型 元组转字符串 di = ('中国','北京','河南','郑州') x = str(di) x = str(di) print(x) <class 'str'> ('中国', '北京', '河南', '郑州') 元组转列表 di = ('中国','北京','河南','郑州') x = list(di) print(type(x)) print(x) <class 'list'> ['中国', '北京', '河南', '郑州'] 元组转字典 di = ('中国','北京','河南','郑州') x = dict(di) print(type(x)) print(x) <class 'dict'> {'中': '国', '北': '京', '河': '南', '郑': '州'} ###报错#### di = ('中国北京','河南','郑州') x = dict(di) print(type(x)) print(x) Traceback (most recent call last): File "D:/PythonCode/day7/tsxt.py", line 2, in <module> x = dict(di) ValueError: dictionary update sequence element #0 has length 4; 2 is required 元组转集合 di = ('中国北京','河南','郑州') x = set(di) print(type(x)) print(x) <class 'set'> {'河南', '中国北京', '郑州'} 集合转其他类型 集合转字典 di = {'中国','北京','河南','郑州'} x = dict(di) print(type(x)) print(x) <class 'dict'> {'中': '国', '河': '南', '郑': '州', '北': '京'} ###报错#### di = {'中国北京','河南','郑州'} x = dict(di) print(type(x)) print(x) Traceback (most recent call last): File "D:/PythonCode/day7/tsxt.py", line 2, in <module> x = dict(di) ValueError: dictionary update sequence element #2 has length 4; 2 is required 集合转列表 di = {'中国北京','河南','郑州'} x = list(di) print(type(x)) print(x) <class 'list'> ['河南', '中国北京', '郑州'] 集合转字符串 di = {'中国北京','河南','郑州'} x = str(di) print(type(x)) print(x) <class 'str'> {'郑州', '中国北京', '河南'} 集合转元组 di = {'中国北京','河南','郑州'} x = tuple(di) print(type(x)) print(x) <class 'tuple'> ('郑州', '河南', '中国北京')
python 07的更多相关文章
- 【Python 07】汇率兑换1.0-2(基本元素)
1.Python基本元素 (1)缩进:表示代码层次关系(Python中表示程序框架唯一手段) 1个tab或者4个空格 (2)注释:开发者加入的说明信息,不被执行.一个代码块一个注释. # 单行注释(一 ...
- [Python] 07 - Statements --> Functions
故事背景 一.阶级关系 1. Programs are composed of modules.2. Modules contain statements.3. Statements contain ...
- python 07 字典 集合
字典 key:value 键:值 映射,哈希值,关系(数组) x=['1','2'] y=['a','b'] >>print(y[x.index('1')]) a index() 函数用于 ...
- python 07篇 内置函数和匿名函数
一.内置函数 # 下面这些要掌握 # len type id print input open # round min max filter map zip exec eval print(all([ ...
- headfirst python 07 ~ 08
Web 不论你在 web 上做什么, 都离不开请求和响应, web请求作为某个用户交互的结果由web浏览器发送到web服务器, 在web服务器上, 会生成web响应(或应答)并发回到 web 浏览器. ...
- python --- 07 补充( join 删除和添加 fromkeys ) 深浅拷贝
一.基本数据类型补充 1.join() "*".join("马虎疼") # 马*虎*疼 把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到 ...
- python 07 数据类型
目录 1. 基础数据类型填充 1.str:(不可变) 2. list: 3. tuple: 4. dict: 5. set: 6. bool: 7. 数据类型之间转换 2.删除列表/字典的代码坑: 3 ...
- Python - Tips
01 - input与raw_input的区别 input() #可以直接输入数字,但输入字符的要用引号''或者双引号"" raw_input() #将所有的输入都直接当作一串字符 ...
- python入门基础:文件的读写
文件的读写操作运用广泛,无论是何种语言都会涉及到文件的输入输出. 下面简单的总结一下文件的读写: 1:open()函数 f = open('workfile', 'w') 函数 open()返回文件的 ...
随机推荐
- struts2 数据转换器
四.数据类型的转换(明白原理,实际开发中几乎不用) 1.开发中的情况: 实际开发中用户通过浏览器输入的数据都是String或者String[]. String/String[]————填充模型(set ...
- (贪心 区间) 51nod1091 线段的重叠
X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ...
- (DIjsktra算法) nyoj1401-一场说走就走的旅行
题目描述: 有一天,孩子回来对我说:“妈妈,听说马尔代夫很不错,放假了我想去玩.”马尔代夫?我也想去!没有人不向往一场说走就走的旅行!“其实我想去的地方很多,呼伦贝尔大草原.玉龙雪山.布达拉宫.艾菲尔 ...
- Python之字符编码与文件操作
目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...
- C# WebApi过滤器(开发接口必备利器)
在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...
- Java基础super关键字、final关键字、static关键字、匿名对象整理
super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...
- TeamViewer 安装
TeamViewer 安装 ----------- 免费版的安装 安装后打开使用 ------------------------------------
- 如何优雅地使用Sublime Text3
此文非原创,出处见文章结尾. 一.Sublime Text 3插件安装 优雅使用Sublime Text,插件则是不可缺少的存在:而插件的备份就显得非常的重要(譬如:各平台同步:更换系统/电脑,迅速使 ...
- Linux记录-shell实现脚本监控服务器及web应用
1.apache web 服务器 1 2 3 4 5 6 7 8 9 10 !/bin/bash # 表示请求链接3秒钟,不要返回的测试数据 nc -w 3 localhost 80 &> ...
- 编写高质量Python代码总结:待完成
1:字符串格式化 #避免%过多影响阅读 print('hello %(name)s'%{'name':'tom'}) #format方法print('{name} is very {emmition} ...