如何解决查找仅包含特定目录的os.walk所有文件
目录树如下所示:
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。