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