第28-31节学习笔记——文件
本帖最后由 wxyj3496 于 2020-1-25 11:36 编辑1、用内置函数open('文件路径和文件名')
2、打开模式如下图
3、文件方法
4、写入文件后,执行内建方法关闭close()才会保存在硬盘里,否则只会存在内存中
5、将一个文件存成另一个后缀的方法如下
6、使用w打开文件,只要不使用close()关闭文件,就可以使用write()内建函数接着写下去。执行完close()后,在用w打开,就是覆盖了。
7、python很灵活,可以用如下语句直接逐行读,直接打印每行了
f=open('e:\\text.txt')
for eachline in f:
print(eachline)
8、第30节的课后练习0,如下图,若按原程序使用all_files = os.listdir(os.curdir)中的os.chudir,可以有效判断文件夹。使用'c;\\','c:',不能识别文件夹,使用'.'可以识别文件夹,'..''pardir'也不可以。疑问啊??????打印出来,都是字符串啊。不清楚判断为dir(目录的判据)
做了个验证,应该是需要具备以下两个条件,才会判断为目录
a.目录真实存在
b.路径完整,是绝对路径
如下图
但是练习题中的写法,打印出来也没路径啊。我只能认为,打印出来时,把路径隐藏了。
百度了一下,果然,如下图
代码验证如下图:
然后,我指定目录绝对路径打印,发现原来是listdir()的问题,假使我这样写
执行后是这样
上图中,e:\code是我程序的所在目录,e:\code\之后呢,是我指定路径d:\Programms下的文件清单。listdir()把执行文件目录和指定文件目录的文件名拼接在一起,产生了绝对路径,这个绝对路径是不存在的,所以在执行isdir()时,会输出False。貌似时listdir()的一个bug。
将代码做如下改变就可以实现任意路径判断目录的功能,如下图,先用listdir()读出文件名,在使用os.path.split()分离出文件名,再用os.path.join,将
文件名和目录合并。
执行结果如下,注意我执行文件在E:\code下,已经换过来了。
任意路径判断文件和文件夹个数的代码如下
在做课后题2时,发现还可以使用os.dir()改变当前工作目录的方法实现
9 第30节的课后练习2,当目录输入为根目录时,会报如下错误,不是根目录没有关系。搞了一下午,无解,留后续解决
10 第30节课后题4中os.wolk()功能如下
练习如下,os.walk()可以把指定目录下的所有文件列出来,包含子目录,返回多个元组,每个元组是一级目录,每个元组里面包括三个数组,第一个数组是目录,第二个是目录下的文件夹,第三个是目录下的文件
11、第30节,课后题4,打开文件会报如下错误,需要进一步了解
12、pickle可以将所有文件转化为二进制文件,也可以将转化好的二进制文件在恢复成原文件,方法入下。可用于存放数据,节省程序代码。
练习2其实可以用os.walk方法做
页:
[1]