让python飞:形象理解python os模块、内存硬盘、字节字符、文件读写复制

让python飞:形象理解python os模块、内存硬盘、字节字符、文件读写复制_第1张图片
Day08葫芦娃救爷爷
葫芦娃去救爷爷,在洞口遇到了一个小机器人。它对葫芦娃说,它是这个洞的管家
(os模块管理目录和文件),并告诉葫芦娃这个洞的名字叫温豆思洞,简称牛头洞(# print(os.name) )。它领着葫芦娃进入 洞内,第一个洞大厅里挂着很多千奇百怪的东西,小机器人告诉葫芦娃这些东西挂在大厅是为了取用方便(environ:返回当前操作系统中所有的环境变量以及其内容,以键值对的形式进行存储管理print(os.environ)),小机器人把把这些东西的名字和地址打印到一个字典上,送给葫芦娃。
通过大厅往里走,这时突然有个宠物蛋落到葫芦娃手里,小机器人告诉葫芦娃,宠物蛋能告诉你当前正在运行的东西的完整的路径
(print(os.getcwd())返回当前正在被执行的文件的绝对路径)。葫芦娃将它揣到口袋里。通道两边有一些箱子,箱子上贴着一张纸,里面详细写着箱子里的小箱子和东西的名字,但没有小箱子里的东西名字。(listdir(path):将path路径下的子目录名和文件名以字符串类型保存到列表中返回print(os.listdir(r’D:\python1809\day06’)))。再往前走,过道两边分别有个小棉裤和大棉裤在制作箱子。小棉裤只能造一个箱子(os.mkdir(r’D:\python1809\day08\hello1’)创建单层目录,不能级联创建目录),大棉裤可以一次性造很多箱子套箱子(os.makedirs(r’bb\cc\dd’)创建多级目录,也可以创建单层目录)。小棉裤后面还有个粉碎机,它上面有个箱子的标志,它可以把不要的小箱子直接粉碎掉,不留痕迹(rmdir(path):删除单层目录,不能级联删除目录)。大棉裤旁边还有个大粉碎机,同样可以将大箱子粉碎掉(removedirs(path):删除多层目录,也可以删除单层)。还有个铁锨用来埋东西的(remove(path):删除文件),铁锨旁边立着个算命先生,它能给箱子和东西重新起名字(rename(src,dest):重命名目录或者文件)。
过了过道,来到了一个小厅,小机器人告诉葫芦娃,这个小洞也是属于他的。洞顶上挂了个小喇叭(join(first,second):将first和second两部分内容(字符串数据)拼接得到一个新的串(描述物理地址);【注意】:不关注路径是否真实存在),它能把两张纸上写的路径信息拼在一起大声念出来,不管路径是不是真的存在。这个时候,大喇叭念了一个地址,一下子来了三个穿制服的警察,他们能分别判断这个地址存不存在(exists(path):判断path描述的物理路径是否真实存在;如果存在,返回True;反之,返回False)?判断地址是不是个箱子(isfile(path):判断path描述的物理路径是否是一个文件;如果存在,返回True;反之,返回False)?葫芦娃以为是蛇精的地址,就让他们带领去找这个地址但他们只能判断,但并不能找到这个地址,所以,他们推荐了一个眼镜给葫芦娃。这个眼镜左眼能告诉你刚才所念的地址中最后一个目标之前的路径(dirname(path):返回path中最后一个\前面的部分(串),最终以字符串的形式返回),右眼镜能告诉你地址最后的目标的名字(basename(path):返回path中最后一个\后面的部分(串),最终以字符串的形式返回)。这时突然有个电锯过来把眼镜从中间给锯烂了,然后得意洋洋跑了,所以眼镜就光荣牺牲(split(path):将path变量中最后一个\前面的部分(串),放入到元祖的第一个元素位;将path变量中最后一个\后面的部分(串),放入到元祖的第二个元素位;最终返回元祖对象)。葫芦娃一想这咋办啊,就把地址写到一张纸上,结果又来一把电锯,将地址从最后一个句号处给切断了(splitext(path):将path变量中最后一个.前面的部分(串),放入到元祖的第一个元素位;将path变量中最后一个.以及其后面的部分(串),放入到元祖的第二个元素位;最终返回元祖对象)。葫芦娃一脸懵逼。小机器人说他只能帮到这了。葫芦娃谢过机器人继续往里走
出了小洞,葫芦娃来到了一块露天小空地,空地中间摆着一个很大的硬石头盘子(硬盘:计算机硬件的组成部分之一,它是一种容器,用来存储数据,处理数据速度慢,存储的数据量大,断电死机内部数据不丢失了,持久存储数据;),盘子里放了个大内存卡(内存:计算机硬件的组成部分之一,它是一种容器,用来存储数据,处理数据速度快,存储的数据量小,断电死机内部数据就丢失了,短暂性存储数据;)。空地边上靠石壁的地方整整齐齐放着一排石头(字节:作为计算机存储数据的单位(默认),底层唯一能够识别并且运算的都是字节),石头上有这些石头做成的石像(字符:人类将字节封装为另一个能够直接识别的数据单位,底层还是字节)。石头能组成各种各样的东西。石壁上挂着三幅画,分别是用石头组成一个白头鹰(ascii码表:u.s.a设计出来的,字符范围非常少;不包含很多其它国家的文字,英文字符占用内存1个字节),中间一幅是讲解怎么用石头组成一个诺亚方舟(utf-8码表:现今比较通用的一张编码表,包含世界上所有国家的文字内容,范围:0~65535之间, 1个汉字占用内存3个字节,1个英文字符占用内存1个字节),最右边的画是用石头怎么组成一只熊猫(gbk码表:gbk属于gb2312的扩充版,兼容gb2312中的所有字符,并且加入了更多的一些汉字内容; 1个汉字占用内存2个字节,1个英文字符占用内存1个字节在我们当前中国环境下,大多数情况默认就是使用gbk作为编码),熊猫手里还拿着一个贵宾卡!
葫芦娃在白头鹰的下面搬起一个石像把它拆成石块(encode(encoding,errors):对字符串数据进行编码操作,得到一个bytes类型的对象b = str1.encode(encoding=‘gbk’)),但是重新垒的时候按照熊猫画的方法,结果就失败了(decode(encoding,errors):对字符串数据进行解码操作,理解:将字节还原为str类型的数据str2 = b.decode(encoding=‘utf-8’,errors=‘ignore’))。原来,这些石块都是有编号的,如果你将石头上的画取下来,透过画去看那些石头,你能看到一个石像,但如果你透过其他的画去看可能只看到奇形怪状。所以,你只能透过一幅画去看它下面的石头,才能看到石像
葫芦娃环顾四周,发现有个石门,石门旁边放着个大海蚌,它头上有四个孔。如果你要打开石门需要将四个孔里填满东西(open(path,打开方式,[encoding=],[errors=]))。第一个孔里放的是这个石门所处的具体地址,要写在纸上再放进去(path:文件的路径(字符串体现))。第二个孔里要放进你来的目的,是只是来看看房间里的石像(r:只读字符),还是要把里面的石像都换掉(w:只写字符),还是要往里面放新的石像(a: 追加字符),还是只是看看里面的石头(rb: 只读字节)。第三个孔要放进去你要用哪幅画看里面的石像(encoding:确定字符集(编码、解码);如果不定义,默认使用gbk进行编码和解码使用),第四个孔你要告诉它如果画与石像不匹配怎么办,是直接警告报警,还是就让继续看一些奇形怪状出来(errors:取值:‘ignore’ 定义了errors = ‘ignore’;假设编码解码不一致,不会报错,但是会乱码不定义的话,就直接报错了(出现异常))。
葫芦娃告诉大海蚌它是来看看里面的石像的,大海蚌张开了嘴,这时石门打开!
打开石门,葫芦娃用照相机拍到了洞内所有的东西(read(): 一次将文件中所有的内部读到程序中)。里面排列着许多石像,这么多的石像,还是几个几个的拍吧(read(num): 一次将num个字符读入到程序中)。拍了几个后,葫芦娃感觉这样有些慢,索性一列一列的拍照(readline():每次读取文件中的一行数据(字符串数据))。最后拍了一张全部石像的队列的照片(readlines():将文件中所有的行都以字符串的形式存入到一个列表中返回)。
拍完照片后,葫芦娃盯着照片看,发小有个石像跟他爷爷很像。这时有个鹦鹉飞过来,它专注于看照片上的蛛丝马迹。鹦鹉看了看照片,告诉葫芦娃这个石像前面一共有多少块石头(tell():返回文件描述符所定位到的已读字节数),要过去不太容易,但是,葫芦娃决心已定,他唤来旺财,并告诉他要经过多少个石块才能找到他爷爷(seek(num): 将文件描述符回到num个字节位置)。葫芦娃顺利找到了爷爷,开心开心极啦!接着爷爷想要回家。但葫芦娃突然想留下点东西,他重新向大海蚌里输入四个纸条,告诉他要往里面放一些石像。本来葫芦娃想把石像全部换成一个小丑石像。后来不忍心,就只在石像最后面放了一个小丑石像

(写操作:'w'或者'wb'   特点:会覆盖之前的内容 
write(o):将o中的数据写入到文件中.fw = open(path,'w')
# fw.write('老郭帮帮哒') 
# fw.write('杜老师壮壮哒') 
# fw.close()

#只在最后面添加 
fw = open(path,'a')
fw.write('\n老郭又回来啦')
fw.close())

最后离开山洞,葫芦娃还把洞门给关上了(关闭文件:记住一行代码搞定:调用close()函数即可)。
把爷爷解救出来后,回到家爷爷给它举行了成人礼,葫芦娃们可以脱离家族成为一个真正的团体了,他们的组织就叫葫芦七侠

(内置函数:eval(str)参数:str类型的对象 
作用:函数执行完毕后,将str字符串中字面量为iterable的内容,还原成为其相应的容器类型数据 
举例: 
'[1,2,3,4]'        -->        [1,2,3,4] 
'(11,22,33)'        -->        (11,22,33))

你可能感兴趣的:(python基础,python,os,内存结构,编码器)