【问题标题】:how to get the directory names for every file? [duplicate]如何获取每个文件的目录名称? [复制]
【发布时间】:2020-12-01 13:16:48
【问题描述】:
root
--- audi    (dirs)
           ---11 01012020.csv  (files)
           ---01 102020.csv
--- bmw
            ---66  10052020.csv
            ---43  11112020.csv
--- mercedes
             ---34  21062020.csv
             ---23  30112020.csv

以上是我的根目录、目录和路径的结构。我试图得到 3 件事。 carfile_iddate

  1. Car 是目录名
  2. file_id 是第一个拆分(又名 文件名中第一个空格之前的所有内容)
  3. date 是之后的一切 文件名中的第一个空格..

这是我的代码:

for root, dirs, files in os.walk(path_root):
    for file in files:
        if file.endswith('.csv'):
            file_id = file.split()[0]
            date = re.search(' (\d+).', file).group(1)
            car = ? idk how to get this one.

如您所见,我设法获得了file_iddate。现在我想获取每个文件的汽车名称(目录名称)......实现这一目标的最简单方法是什么?

【问题讨论】:

  • 您是否尝试打印/使用root 的最后一部分?那就是你所在的目录...
  • @PatrickArtner 你是什么意思?这会给我每个文件的目录名称吗?
  • 你为什么期待别的?
  • 你的文件的完整路径是os.path.join(root,file) - 所以使用dupe中的方法会给你你的目录。

标签: python file os.walk


【解决方案1】:

root 变量包含当前目录;你想要汽车的最后一个组件。

for root, dirs, files in os.walk(path_root):
    for file in files:
        if file.endswith('.csv'):
            file_id = file.split()[0]
            date = re.search(' (\d+).', file).group(1)
            car = os.path.basename(root)

如果您的文件名具有代表性,那么您实际上不需要正则表达式来提取日期。也许file.split()[1].split('.')[0]

【讨论】:

  • AttributeError: module 'os' has no attribute 'file'。我认为有什么问题......它还没有工作......
  • 抱歉,现在修正了——我不知道那个错字是从哪里来的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
相关资源
最近更新 更多