【问题标题】:Searching for submap in maps在地图中搜索子地图
【发布时间】:2015-10-05 09:17:35
【问题描述】:

我想在地图中搜索地图名称。为了更清楚我想要什么,这是地图结构:

\All data
   \Submap1
      \SubSubmap1
         \some files
      \Subsubmap2

   \Submap2
   \Submap3

我想要做的是搜索 SubSubmap。我想根据子图的名称搜索它们。

我希望你们能给我一个先机,因为我找不到任何方法来搜索地图的名称。

【问题讨论】:

  • 如何在 python 中存储这个?
  • 对于其他程序,我使用了路径,并使用 for 循环遍历所有文件。据我所知,这对于地图是不可能的。特别是如果我需要进入这些地图的子图。所有这些地图和数据都存储在本地。
  • 我会说你需要'os.walk'。
  • 我确实读过关于 os.walk 的分配。但据我所知,你只能通过 Submaps'。不是子子图(至少据我所知)。如果我错了,请纠正我并告诉我如何:)
  • 您想获取 Subsub.. 文件夹的内容吗?还是只数数?

标签: python


【解决方案1】:

让我们使用here 中的explore() 函数将os.walk() 的结果保存到字典中。

然后只需遍历名称并将它们与模式匹配。

我的文件夹:

.\all_data
.\all_data\sub1
.\all_data\sub1\subsub1
.\all_data\sub1\subsub1\some_files
.\all_data\sub1\subsub2
.\all_data\sub2

def explore(starting_path):
  alld = {'': {}}

  for dirpath, dirnames, filenames in os.walk(starting_path):
    d = alld
    dirpath = dirpath[len(starting_path):]
    for subd in dirpath.split(os.sep):
      based = d
      d = d[subd]
    if dirnames:
      for dn in dirnames:
        d[dn] = {}
    else:
      based[subd] = filenames
  return alld['']

data = explore('.')

for k, v in data['all_data'].iteritems():
    if v:
        for key in v:
            if 'subsub' in key:
                print key

>>> {'all_data': {'sub1': {'subsub1': {'some_files': []}, 'subsub2': []},
          'sub2': []}}
>>> subsub2
>>> subsub1

您可以在这里使用更智能的验证if 'subsub' in key: 作为正则表达式等等。

【讨论】:

  • 太棒了,很有魅力^^。感谢您的大力帮助:)。
  • 我尝试使用此代码遍历搜索词列表,然后所有内容都会与列表中的项目数量相乘。我怎样才能仍然遍历我的搜索词列表(替换“如果 'subsub in key' 中的 'subsub')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多