问题描述
目录树如下所示:
DirA--
|
-- Map
|
-- fig--
|
--file.png
|
-- Data--
|
-- file.xls
|
-- file.csv
有多个目录,包含多个文件。我想获取仅在Data
目录中找到的那些文件的完整路径。
这是我到目前为止所拥有的:
dirlist = []
thisdir = os.getcwd()
for root,dirs,files in os.walk(thisdir):
for d in dirs:
if d.startswith("Data"):
dirlist.append(os.path.join(root,d))
解决方法
要仅获取数据目录文件,您将需要组合#loading
和svg
。
calculate_result
尝试使用“目录”
如果是“ dirs”,则您无权访问文件。例如,当root
为files
时,for root,dirs,files in os.walk(thisdir):
if "Data" in root: # try using in instead of startswith
for f in files:
dirlist.append(os.path.join(root,f))
列表中将有root
,但是您将无权访问DirA
文件夹中的文件。 / p>
import os
from os import listdir
from os.path import isfile,join
rootdir = os.getcwd()
folder_name = "Data"
def get_files(path):
onlyfiles = [f for f in listdir(path) if isfile(join(path,f))]
return onlyfiles
def get_search_files(start_path,folder_name):
for subdir,files in start_path:
for x in dirs:
if x == folder_name:
data_folder_path = os.path.join(subdir,x)
dirlist = get_files(data_folder_path)
return dirlist
dirlist = get_search_files(os.walk(rootdir),folder_name)
,
# This solution will not walk in all the directories and sub-directories as `os.walk` does.
# it will only look for files in specific directories from root. So fast.
import glob
import os
files_path_list = []
for entry in (glob.glob('*/Data/*')):
path = os.path.join(os.getcwd(),entry)
if os.path.isfile(path):
files_path_list.append(path)