Python中获取当前目录和子目录下所有文件或指定文件的方法


原文链接: Python中获取当前目录和子目录下所有文件或指定文件的方法

方法一:os.listdir()
(1)获取当前目录及子目录下所有文件路径列表:getallfiles.py

import os
import sys

allfile = []
def get_all_file(rawdir):
      allfilelist=os.listdir(rawdir)
      for f in allfilelist:
            filepath=os.path.join(rawdir,f)
            if os.path.isdir(filepath):
                  get_all_file(filepath)
            allfile.append(filepath)
      return allfile

if __name__=='__main__':
      if(len(sys.argv) < 2):
            print("Usage: getallfiles.py rawdir")
            exit()
      rawdir = sys.argv[1]
      #current = os.getcwd()
      allfiles = get_all_file(rawdir)
      print allfiles

在命令行中输入:python getallfiles.py E:

就会列出E盘下面所有目录(包括子目录)下的所有文件。

(2)获取当前目录及子目录下指定格式文件路径:get_format_files.py

# _*_coding=UTF-8_*_

import os
import re
import sys

##获取指定目录下指定格式的所有文件路径列表
def get_format_file(rawdir):
    isfile = 0
    if os.path.isdir(rawdir):
        allfiles = os.listdir(rawdir)
        files = [rawdir+"/"+f for f in allfiles if re.search('txt$',f)]
    elif os.path.isfile(rawdir):
        iffile = 1
        files = [rawdir]
    else:
        files = []
        print("ERROR: "+ rawdir+" is not a dir or file!")
    return [files, isfile]


#获取文件名称
def get_file_name(fullfilename):
    tmp = fullfilename.strip() #去除前后不必要的空格
    name = os.path.split(tmp)[-1] # 提取文件名,不包含路径
    return os.path.splitext(name)[0] #提取文件名,不包含后缀

在命令行中输入:python get_format_files.py E:

就会列出E盘下面所有目录(包括子目录)下的指定格式的所有文件。

方法二:os.walk()
(1)获取当前目录及子目录下所有文件路径列表:getallfiles_v2.py

import os
import sys

allfiles = []
def get_all_file(rawdir):
      for root,dirs,files in os.walk(rawdir):
            for f in files:
                  #if(re.search('mp4$'),f):
                  allfiles.append(os.path.join(root,f))
            for dirname in dirs:
                  get_all_file(os.path.join(root,dirname))
      return allfiles

if __name__=='__main__':
      if(len(sys.argv) < 2):
            print("Usage: getallfiles.py rawdir")
            exit()
      rawdir = sys.argv[1]
      #current = os.getcwd()
      allfiles = get_all_file(rawdir)
      print allfiles

在命令行中输入:python getallfiles_v2.py E:

就会列出E盘下面所有目录(包括子目录)下的所有文件。

参考:
https://www.cnblogs.com/sudawei/archive/2013/09/29/3346055.html

https://blog.csdn.net/KGzhang/article/details/72964785

`