【问题标题】:Iterate over files located in different folders遍历位于不同文件夹中的文件
【发布时间】:2018-05-16 20:04:15
【问题描述】:

我想编写一个函数来遍历不同文件夹中的 excel 文件。每个文件的部分路径是相同的,例如:

C:\Main\Division\Reports\Year\Data.xls

每条路径中唯一改变的部分是“年”。这些文件都具有相同的名称。

有没有办法使用 Year 的占位符来做到这一点?如果不是,我应该采取什么方法?

【问题讨论】:

  • 澄清一下,是否需要遍历父目录(C:\Main\Division\Reports)中的所有目录?
  • from pathlib import Path 然后for p in Path(r'C:\Main\Division\Reports').glob('*/Data.xls'): do_stuff(p)
  • @Sach 我想从位于每个 Year 文件夹中的 1 个文件中提取数据
  • @juanpa.arrivillaga 感谢您的回复。我收到 OSError: [WinError 123] 文件名、目录名或卷标语法不正确。 .glob 似乎引用了 Reports 目录中列出的第一个文件夹,而不是我需要的文件夹
  • @BeginnerKruman 嗯,我写得很快,并在 glob 参数中使用了 unix 语法。尝试使用 windows 语法。我真的没有 windows 盒子来试验 atm...

标签: python file iterate


【解决方案1】:

你可以使用os.listdir函数

directory = "C:\Main\Division\Reports"
root_dir = os.path.dirname(directory)
for data in os.listdir(directory):
      file_name = os.path.join(root_dir, data, 'Data.xls')
      # do something

【讨论】:

    【解决方案2】:

    你可以试试 os.walk

    import os
    
    parent = "C:\Main\Division\Reports"
    
    for root, directory, files in os.walk(parent):
        print root
        print directory
        print files
    

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 2017-04-03
      • 1970-01-01
      • 2020-11-20
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多