第五节-文件目录操作

问题1.
统计某一个路径下某一类型文件的个数
如: 统计 F 盘, 所有 .ppt 类型文件的个数
#问题1、统计路径下所有某个类型文件个数
count = 0
#遍历路径
for root,dirs,file_names in os.walk('E:/test'):
    for file_name in file_names:
        #文件名切片出文件扩展名
        file_extension_name = os.path.splitext(file_name)
        print(file_extension_name)
        #匹配目标文件,统计个数
        if file_extension_name[1] == '.pdf':
            count +=1
print(count)
>>
('2016120611383940', '.xls')
('2017091511113646', '.xls')
('2017091916254996', '.doc')
('2017091916272181', '.doc')
('面试通知--收到请回复', '.zip')
('【课件】第4节-文件操作', '.pdf')
('【课件】第5节-文件目录操作', '.pdf')
('class', '.txt')
('data', '.json')
('iris_data', '.csv')
('【课件】第4节-文件操作', '.pdf')
('【课件】第5节-文件目录操作', '.pdf')
4
os.path.splitext( )  :分离文件名和扩展名

问题2.
计算某一文件夹占用磁盘空间的大小.
#2、计算某一文件夹占用空间的大小
size = 0
for root,dirs,file_names in os.walk('E:/test'):
    for file_name in file_names:
        size += os.path.getsize(os.path.join(root,file_name))
print(size)
"""返回指定文件夹大小函数
input:文件价路径
output:文件夹大小
"""
#写成函数使用
def getFileSize(file_path, size = 0):
for root, dirs, file_names in os.walk(file_path):
    for file_name in file_names:
        size += os.path.getsize(os.path.join(root, file_name))
    return size
#调用函数,返回文件夹大小
print(getFileSize('E:/test/'))
>>
7179702
7179702
join( )  连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join()函数
语法:  os.path.join(path1[,path2[,......]])
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略
#对序列进行操作(分别使用' '与':'作为分隔符)
>>> seq1 = ['hello','good','boy','doiido']
>>> print ' '.join(seq1)
hello good boy doiido
>>> print ':'.join(seq1)
hello:good:boy:doiido
#对字符串进行操作  
>>> seq2 = "hello good boy doiido"
>>> print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
#合并目录
>>> import os
>>> os.path.join('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'

问题3.
列出某一文件夹下包含的所有文件(排出子文件夹)的完整绝对路径
os.walk(top, topdown=True, onerror=None, followlinks=False)
可以得到一个三元tupple(dirpath, dirnames, filenames), 
第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
dirpath 是一个string,代表目录的路径,
dirnames 是一个list,包含了dirpath下所有子目录的名字。
filenames 是一个list,包含了非目录文件的名字。
这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).
#3、列出所有文件的完整绝对路径,
for root, dir, file_names in os.walk('E:\\test'):
    for file_name in file_names:
        print("<%s>'s absolute path = %s"%(file_name,os.path.join(root,file_name)))

#3、定义成函数形式,文件及绝对路径以字典形式存储
def getFilesAbspath(file_path,files_Abspath):
    files_Abspath = {}
    for root, dir, file_names in os.walk('E:\\test'):
        for file_name in file_names:
            files_Abspath[file_name] = os.path.join(root, file_name)
            #print("<%s>'s absolute path = %s"%(file_name,os.path.join(root,file_name)))
    return files_Abspath
print(getFilesAbspath('E:/test',{}))
>>
<2016120611383940.xls>'s absolute path = E:\test\2016120611383940.xls
<2017091511113646.xls>'s absolute path = E:\test\2017091511113646.xls
<2017091916254996.doc>'s absolute path = E:\test\2017091916254996.doc
<2017091916272181.doc>'s absolute path = E:\test\2017091916272181.doc
<【平安科技】面试通知--收到请回复.zip>'s absolute path = E:\test\面试通知--收到请回复.zip
<【课件】第4节-文件操作.pdf>'s absolute path = E:\test\【课件】第4节-文件操作.pdf
<【课件】第5节-文件目录操作.pdf>'s absolute path = E:\test\【课件】第5节-文件目录操作.pdf
<class.txt>'s absolute path = E:\test\【课件】第4节-文件操作\class.txt
<data.json>'s absolute path = E:\test\【课件】第4节-文件操作\data.json
<iris_data.csv>'s absolute path = E:\test\【课件】第4节-文件操作\iris_data.csv
<【课件】第4节-文件操作.pdf>'s absolute path = E:\test\【课件】第4节-文件操作\【课件】第4节-文件操作.pdf
<【课件】第5节-文件目录操作.pdf>'s absolute path = E:\test\【课件】第4节-文件操作\【课件】第5节-文件目录操作.pdf
{'2016120611383940.xls': 'E:\\test\\2016120611383940.xls', '2017091511113646.xls': 'E:\\test\\2017091511113646.xls', '2017091916254996.doc': 'E:\\test\\2017091916254996.doc', '2017091916272181.doc': 'E:\\test\\2017091916272181.doc', '面试通知--收到请回复.zip': 'E:\\test\\面试通知--收到请回复.zip', '【课件】第4节-文件操作.pdf': 'E:\\test\\【课件】第4节-文件操作\\【课件】第4节-文件操作.pdf', '【课件】第5节-文件目录操作.pdf': 'E:\\test\\【课件】第4节-文件操作\\【课件】第5节-文件目录操作.pdf', 'class.txt': 'E:\\test\\【课件】第4节-文件操作\\class.txt', 'data.json': 'E:\\test\\【课件】第4节-文件操作\\data.json', 'iris_data.csv': 'E:\\test\\【课件】第4节-文件操作\\iris_data.csv'}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页