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