字符编码python
二进制和字符之间的转换过程 --> 字符编码vim
ascii,gbk,shit,fuck 每一个国家都有本身的编码方式编辑器
美国电脑内存中的编码方式为ascii ; 中国电脑内存中的编码方式为gbk , 美国电脑没法识别中国电脑写的程序 , 中国电脑没法识别美国电脑写的程序函数
如今硬盘中躺着 ascii/gbk/shit/fuck 编码的文件, 他们的编码格式已经没法修改了, 因此内存中出现unicode编码, 内存中的unicode编码方式能够识别 ascii/gbk/shit/fuck 编码的文件学习
用unicode编码方式运行了 ascii/gbk/shit/fuck 编码的文件, 最后仍是要装入硬盘, 装入硬盘早期用unicode存进去,可是 他在识别ascii的时候, 会把8位数字转换成16位数字存入硬盘, 浪费空间, 因此出现了utf8(与unicode对应,而且压缩unicode编码的字符)编码
utf8 能识别其余国家的编码,只识别unicode, utf8目前还不能放在内存,. 可是如今写的代码都是utf8, 历史遗留ascii/gbk/shit/fuck 编码的文件早晚消失/淘汰,要么被转换成utf8格式.因此早晚有一天内存中也是utf8.code
python2 和 python3字符编码的区别内存
python2ci
用文件指定的编码方式存储定之后的变量unicode
python3
用unicode编码方式存储定之后的变量
之后写文件以什么格式存储,就以什么格式读取
文件的 三种打开方式
r: 只读 read
w:只写 write 清空后写入(文件不存在自动建立)
a:追加(文件不存在自动建立)
文本模式:t
二进制模式:b
t/b没法单独使用,只能和r/w/a一块儿使用
with管理文件上下文
with open() as f: # 自动关闭
1、文件的两种方式
文件的数据是存放于硬盘上的,于是只存在覆盖,不存在修改这么一说,咱们平时看到饿的修改文件,都是模拟出来的效果,具体的说有两种实现方式。
1.1 方式一
将硬盘存放的该文件的内容所有加载到内存,在内存中是能够修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)。
import os with open('37r.txt') as fr, \ open('37r_swap.txt', 'w') as fw: data = fr.read() # 所有读入内存,若是文件很大,会很卡 data = data.replace('tank', 'tankSB') # 在内存中完成修改 fw.write(data) # 新文件一次性写入原文件内容 # 删除原文件 os.remove('37r.txt') # 重命名新文件名为原文件名 os.rename('37r_swap.txt', '37r.txt') print('done...')
done...
PS:遇到问题没人解答?须要Python学习资料?能够加点击下方连接自行获取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
1.2 方式二
将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件。
import os with open('37r.txt') as fr,\ open('37r_swap.txt', 'w') as fw: # 循环读取文件内容,逐行修改 for line in fr: line = line.replace('jason', 'jasonSB') # 新文件写入原文件修改后内容 fw.write(line) os.remove('37r.txt') os.rename('37r_swap.txt', '37r.txt') print('done...')
done...
总而言之,修改文件内容的思路为:以读的方式打开原文件,以写的方式打开一个新的文件,把原文件的内容进行修改,而后写入新文件,以后利用os模块的方法,把原文件删除,重命名新文件为原文件名,达到以假乱真的目的。
2、定义函数的三种方式
2.1 无参函数
定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名
在函数阶段括号内没有参数,称为无参函数。须要注意的是:定义时无参,意味着调用时也无需传入参数。
若是函数体代码逻辑不须要依赖外部传入的值,必须得定义成无参函数。
def func(): print('hello nick') func() # hello nick
2.2 有参函数
在函数定义阶段括号内有参数,称为有参函数。须要注意的是:定义时有参,意味着调用时也必须传入参数。
若是函数体代码逻辑须要依赖外部传入的值,必须得定义成有参函数。
def sum_self(x, y): """求和""" res = x+y print(res) sum_self(1,2) # 3
2.3 空函数
当你只知道你须要实现某个功能,但不知道该如何用代码实现时,你能够暂时写个空函数,而后先实现其余的功能。
def func(): pass