一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

python读取指定目录下所有文件

时间:2013-05-31 编辑:简简单单 来源:一聚教程网

python的应用过程中,经常会用到获取文件列表的方法,常规的做法是这样的

import os

os.os.listdir(path)

然后再一个一个的分析文件和目录

通过和dos命令dir的巧妙结合,可以很轻松的做到这点,看示例

获取目录下所有文件方法

cmd = "dir /A-D /B"

list_file = os.popen(cmd).readlines()

cmd命令解释为 /A-D 选取所有的非目录文件列表 /B 只使用空格分隔开所有的文件名

在通过readlines方法,获取到包含所有文件的list,这样就得到指定目录下的所有文件了

同时附上获取所有目录的方法:

cmd = "dir /AD /B"

list_file = os.popen(cmd).readlines()

 代码如下 复制代码

import os,glob

def get_file_list(dir_path, extension_list):

'''

fuction: get_file_list(dir_path,extension_list)

parms:

dir_path - a string of directory full path. eg. 'D:user'

extension_list - a list of file extension. eg. ['zip']

return: a list of file full path. eg. ['D:user1.zip', 'D:user2.zip']

''' 

os.chdir(dir_path)

file_list = []

for extension in extension_list:

extension = '*.' + extension

file_list += [os.path.realpath(e) for e in glob.glob(extension) ] 

return file_list

示例,目录结构如下:

F:DOWNLOADSPIC
1.jpg
1.txt
2.jpg
2.txt
3.jpg
3.txt
4.jpg
5.jpg
6.jpg

 代码如下 复制代码

dir_path = 'F:downloadspic'

extension_list = ['jpg']

a = get_file_list(dir_path, extension_list)

print('extension is 'jpg'')

for file in a:

print(file)

print('n') 

extension_list = ['txt']

a = get_file_list(dir_path, extension_list)

print('extension is 'txt'')

for file in a:

print(file)

print('n') 

extension_list = ['jpg','txt']

a = get_file_list(dir_path, extension_list)

print('extension is 'jpg' and 'txt'')

for file in a:

print(file)

输出:

extension is 'jpg'

F:downloadspic1.jpg

F:downloadspic2.jpg

F:downloadspic3.jpg

F:downloadspic4.jpg

F:downloadspic5.jpg

F:downloadspic6.jpg

extension is 'txt'

F:downloadspic1.txt

F:downloadspic2.txt

F:downloadspic3.txt

extension is 'jpg' and 'txt'

F:downloadspic1.jpg

F:downloadspic2.jpg

F:downloadspic3.jpg

F:downloadspic4.jpg

F:downloadspic5.jpg

F:downloadspic6.jpg

F:downloadspic1.txt

F:downloadspic2.txt

F:downloadspic3.txt

python 读取一个目录下的所有目录和文件

 代码如下 复制代码

#!/usr/bin/python
# -*- coding:utf8 -*-

import os
allFileNum = 0
def printPath(level, path):
    global allFileNum
    '''
    打印一个目录下的所有文件夹和文件
    '''
    # 所有文件夹,第一个字段是次目录的级别
    dirList = []
    # 所有文件
    fileList = []
    # 返回一个列表,其中包含在目录条目的名称(google翻译)
    files = os.listdir(path)
    # 先添加目录级别
    dirList.append(str(level))
    for f in files:
        if(os.path.isdir(path + '/' + f)):
            # 排除隐藏文件夹。因为隐藏文件夹过多
            if(f[0] == '.'):
                pass
            else:
                # 添加非隐藏文件夹
                dirList.append(f)
        if(os.path.isfile(path + '/' + f)):
            # 添加文件
            fileList.append(f)
    # 当一个标志使用,文件夹列表第一个级别不打印
    i_dl = 0
    for dl in dirList:
        if(i_dl == 0):
            i_dl = i_dl + 1
        else:
            # 打印至控制台,不是第一个的目录
            print '-' * (int(dirList[0])), dl
            # 打印目录下的所有文件夹和文件,目录级别+1
            printPath((int(dirList[0]) + 1), path + '/' + dl)
    for fl in fileList:
        # 打印文件
        print '-' * (int(dirList[0])), fl
        # 随便计算一下有多少个文件
        allFileNum = allFileNum + 1

if __name__ == '__main__':
    printPath(1, '/home/lizheng')
    print '总文件数 =', allFileNum

热门栏目