在进行实际的程序开发的时候往往需要从磁盘的某个地方导入一个或一批文件
1. 最常见的就是在一个已知目录filepath 中导入一个文件名实现约定好的文件filename,
import os
os.path.join(filedir,filename)
os.path.join的好处是可以隐藏操作系统层面的目录分隔符(Linux: ‘/’ Windows: ‘\’)使程序具有跨平台的能力
1.1 若目录为当前目录,则可以用 os.getcwd()
获得当前工作目录(一个字符串,结尾没有目录分隔符)
1.2 或者目录为当前目录下的某个已知子目录subdir 则可以用filedir=os.path.join(os.getcwd(),subdir)
来获得目录。
2. 在某个已知目录filedir下搜索符合符合特性格式的文件
2.1
from glob import glob
filename=glob(os.path.join(filedir,'*.jpg'))
比如示例中就是返回一个包含后缀为jpg格式的文件的文件名列表,((如果以后变成返回一个迭代器,我一点都不奇怪),而且理应支持正则表达式)
主要glob
并不会匹配以点号(dot)'.'
开头的文件
2.2
递归式迭代遍历整个目录树的文件
import os
for fname in os.walk(dirname):
if fname.endswith('.format'):
express 1
else :
express 2
str.endswith(substr)
后缀字符串匹配
str.startwith(substr)
前缀字符串匹配
且二者都有start,end的可选项,来确定比较的始终端(同序列索引)
3检索的同时统计文件基本信息
filesize=os.path.getsize(filename)
filesize 是以Byte 为单位
linenum=sum(+1 for line in open(filename,'rb'))
统计文件的行数
4输出文件存放在某个目录dirname下
if not os.path.exists(dirname):os.mkdir(dirname)
else:
for fname in os.listdir(dirname):
os.remove(os.path.join(dirname,fname))
os.path.exists(dirname)
目录是否存在
os.listdir(dirname)
列出目录下所有的文件和目录名(不含前面的路径)
os.remove(filename)
删除文件
os.remove(dirname)
删除目录
5异常统计
assert expression
当表达式不成立时引起AssertError