Day10(上):IO 文件处理方法

tech2024-07-13  55

Python 回忆录

2020/09/07python的调试模式断点进入调式模式 文件操作(IO技术)文本文件和二进制文件python中相关模块的操作用open()创建文件文本文件的写入write()/writeline()写入数据close()关闭文件流with()语句 管理上下文文本文件的读取二进制文件的读取和写入seek,tell,方法

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())))
最新回复(0)