Python 回忆录
2020/09/07
python的调试模式
断点
程序运行到此处,暂时挂起,停止执行。有点像电影暂停我们可以详细在此时观察程序的运行情况,方
便做出进一步的判断。
就在行数旁边左键单击 就可以设置断点
进入调式模式
右键点击后 找到debug
文件操作(IO技术)
文本文件和二进制文件
- 文本文件:就是可以用记事本程序打开的文件,像word 的文件就不是文本文件。
- 二进制文件:不能用记事本打开的就是二进制文件,会乱码。像MP4,jpg。。。
python中相关模块的操作
用open()创建文件
语法格式如下:
open(文件名)
如果只是文件名,就会储存在当前的目录下(也就是python文件储存的那一目录),也可以录入路径保存。
文本文件对象和二进制文件对象的创建:
如果没有增加模式“b”,则默认创建的是文本文件对象,处理的基本单元是“字符”。
如果是二进制模式“b”,则创建的是二进制文件对象,处理的基本单元是“字节”。
f = open(r"d:\b.txt","w")
文本文件的写入
文本文件的写入一般就是三个步骤:
- 创建文件对象
- 写入数据
- 关闭文件对象
f = open(r"a.txt","a")
s = "itbaizhan\nsxt\n"
f.write(s)
f.close()
常用的编码之间的关系
ASCII 最早美国人发明,只支持字母和符号等
ISO8859-1 等于说是升级版,兼容ASCII的同时还支持一些其他语言。
在同一时期有了unicode 但是由于当时的技术落后,对空间浪费太大 所以就没有多推广。不兼容iso8859,只认UTF-8
UTF是不定长编码,每一个字符都是1到4长度不等,兼容ISO8859.
GB2312,GBK,GB18030是中国的编码方式,常用的还是GB2312和GBK
中文windows 默认是GBK linux默认是UTF-8,所以可能出现乱码。
write()/writeline()写入数据
write(a):把 字符串 a 写入到文件中
writelines(b):把字符串 列表写入文件中,不添加换行符
close()关闭文件流
需要借助异常机制,来close 关闭文件。因为在电脑读代码的时候 在close之前可能就有程序崩溃,那么文件流就没有被关闭
try:
f = open(r"01.text","a")
s = "this is tring close file"
f.write(s)
except BaseException as e:
print(e)
finally:
f.close()
with()语句 管理上下文
with 就会很方便的自动关闭文件流,比close好。等于是建立了一个还原点,使用文件后,自动回到一开始时。一般都是使用这个。
s = ["liuxi\n","mola\n","garcia\n"]
with open(r"d:\bb.txt","w") as f:
f.writelines(s)
文本文件的读取
- read():如果没有确定数字在里面的话就读完,4个的话就是前4个字符
- readline()读一行
- readlines()每一行作为一个字符串进入列表,最后把内容都返回到列表
with open("01.text", "r") as f:
lines = f.readlines()
lines = [content.rstrip() + "#" + str(index) + "\n" for index, content in enumerate(lines)]
with open("01.text", "w") as f:
f.writelines(lines)
二进制文件的读取和写入
和文本一样只是后面有加b
f = open(r"d:\a.txt", ‘wb’) #可写的、重写模式的二进制文件对象
f = open(r"d:\a.txt", ‘ab’) #可写的、追加模式的二进制文件对象
f = open(r"d:\a.txt", ‘rb’) #可读的二进制文件对象
with open('aa.gif', 'rb') as f:
with open('aa_copy.gif', 'wb') as w:
for line in f.readlines():
w.write(line)
print('图片拷贝完成!')
seek,tell,方法
seek(offset,whence)
: offset 是指针的偏移量(为正往结束方向移动,为负往开始方向移动),
whence不同的值代表不同的含义 0:从文件头开始计算(也是默认值)1:从当前位置开始计算 2:从文件尾开始计算 。
其中0:open函数以r,w,带b的二进制模式,就是以任何模式打开文件,都能正常运行。1和2:open函数只能以二进制模式打开文件,才能正常运行,否则就会报出上面的错误。 如果没有以二进制b的方式打开,则offset无法使用负值(即向左侧移动)
tell
:返回文件指针的当前位置
with open("e.txt","r",encoding="utf-8") as f:
print("文件名是:{0}".format(f.name))
print(f.tell())
print("读取的内容:{0}".format(str(f.readline())))
print(f.tell())
f.seek(0,0)
print("读取的内容:{0}".format(str(f.readline())))