第五节-文件目录操作

问题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'}

猜你喜欢

转载自blog.csdn.net/sdhotn/article/details/80323369
今日推荐