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

2020/09/07

python的调试模式

断点

程序运行到此处,暂时挂起,停止执行。有点像电影暂停我们可以详细在此时观察程序的运行情况,方
便做出进一步的判断。
就在行数旁边左键单击 就可以设置断点

进入调式模式

右键点击后 找到debug

文件操作(IO技术)

文本文件和二进制文件

  1. 文本文件:就是可以用记事本程序打开的文件,像word 的文件就不是文本文件。
  2. 二进制文件:不能用记事本打开的就是二进制文件,会乱码。像MP4,jpg。。。

python中相关模块的操作

在这里插入图片描述

用open()创建文件

语法格式如下:
open(文件名)
如果只是文件名,就会储存在当前的目录下(也就是python文件储存的那一目录),也可以录入路径保存。
文本文件对象和二进制文件对象的创建:
如果没有增加模式“b”,则默认创建的是文本文件对象,处理的基本单元是“字符”。
如果是二进制模式“b”,则创建的是二进制文件对象,处理的基本单元是“字节”。

f = open(r"d:\b.txt","w")

在这里插入图片描述

文本文件的写入

文本文件的写入一般就是三个步骤:

  1. 创建文件对象
  2. 写入数据
  3. 关闭文件对象
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)

文本文件的读取

  1. read():如果没有确定数字在里面的话就读完,4个的话就是前4个字符
  2. readline()读一行
  3. 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值