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的更多相关文章

  1. 【Python 07】汇率兑换1.0-2(基本元素)

    1.Python基本元素 (1)缩进:表示代码层次关系(Python中表示程序框架唯一手段) 1个tab或者4个空格 (2)注释:开发者加入的说明信息,不被执行.一个代码块一个注释. # 单行注释(一 ...

  2. [Python] 07 - Statements --> Functions

    故事背景 一.阶级关系 1. Programs are composed of modules.2. Modules contain statements.3. Statements contain ...

  3. python 07 字典 集合

    字典 key:value 键:值 映射,哈希值,关系(数组) x=['1','2'] y=['a','b'] >>print(y[x.index('1')]) a index() 函数用于 ...

  4. python 07篇 内置函数和匿名函数

    一.内置函数 # 下面这些要掌握 # len type id print input open # round min max filter map zip exec eval print(all([ ...

  5. headfirst python 07 ~ 08

    Web 不论你在 web 上做什么, 都离不开请求和响应, web请求作为某个用户交互的结果由web浏览器发送到web服务器, 在web服务器上, 会生成web响应(或应答)并发回到 web 浏览器. ...

  6. python --- 07 补充( join 删除和添加 fromkeys ) 深浅拷贝

    一.基本数据类型补充 1.join() "*".join("马虎疼") # 马*虎*疼 把传递进去的参数进行迭代.  获取到的每个元素和前面的*进行拼接. 得到 ...

  7. python 07 数据类型

    目录 1. 基础数据类型填充 1.str:(不可变) 2. list: 3. tuple: 4. dict: 5. set: 6. bool: 7. 数据类型之间转换 2.删除列表/字典的代码坑: 3 ...

  8. Python - Tips

    01 - input与raw_input的区别 input() #可以直接输入数字,但输入字符的要用引号''或者双引号"" raw_input() #将所有的输入都直接当作一串字符 ...

  9. python入门基础:文件的读写

    文件的读写操作运用广泛,无论是何种语言都会涉及到文件的输入输出. 下面简单的总结一下文件的读写: 1:open()函数 f = open('workfile', 'w') 函数 open()返回文件的 ...

随机推荐

  1. Linux列字符替换

    假如存在file1.txt,其内容如下: aa bb cc dd ee ff gg hh 现将第一列(aa 和 ee)统一修改为mm 则需要输入命令行: awk '{$1="mm" ...

  2. 对C# .Net4.5异步机制测试(二)——加深印象

    public static void Main() { Console.WriteLine(Thread.CurrentThread.ManagedThreadId); In(); Console.W ...

  3. C++基础知识--DAY3

    今天我们开始进入封装类的地方 Encapsulation(封装) (1)  C struct数据封装 当单一变量无法完成描述需求的时候,结构体类型解决了这一问题,可以将多个类型打包成一体,形成新的类型 ...

  4. django系列 1 :python+django环境搭建 +mac提示找不到manage.py命令

    1.安装python3 2.设置python3的环境变量 3.进入命令行模式,输入 pip install django 1.10.3 4.验证是否安装完成 pip show django 5.dja ...

  5. Going Home POJ - 2195 (最小费用最大流)

    On a grid map there are n little men and n houses. In each unit time, every little man can move one ...

  6. POJ 3522 Slim Span(极差最小生成树)

    Slim Span Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9546   Accepted: 5076 Descrip ...

  7. IAR STM32 ------ CSTACK HEAP 设置一次可用栈的大小,HardFault_Hander

    CSTACK:限制函数中定义数组的最大值,否则进入HardFault_Hander HEAP:限制动态分配内存(C函数库中的malloc)的大小,不用可以设置为0

  8. C#设计模式(11)——装饰者模式

    1.装饰者模式介绍 装饰者顾名思义就是对一个类添加一些额外的装饰(功能).我们想给一个对象添加一些额外的功能又不改变对象内方法的签名怎么做呢?最常用的方法就是继承了,子类继承父类,然后重写父类的方法. ...

  9. ORM常用字段和参数

    目录: ORM常用字段和参数

  10. C#实现的系统内存清理

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...