【问题标题】:I am making a file sorter and cant find a bug我正在制作文件分类器,但找不到错误
【发布时间】:2022-08-15 03:45:25
【问题描述】:

所以我希望我的代码找到所有文本文件并将它们放入存储在字典中的列表中,

我创建了一个虚拟目录并将文件放入其中

然后我使用 os 来查找文件扩展名,然后我尝试将其放入 dict 内的列表中

我不知道我做错了什么,这是我的代码:

file_dict = {
    \"Python\": [],
    \"Text\": []
  }
  for file in files:
    split_file = os.path.splitext(file)
    ### sorting  they based on extension
    ### if file is text
    if split_file[1] == \".txt\":
      file_dict[\"Text\"].append(split_file[0])
  return file_dict

但是当我从另一个函数调用它并打印文本文件时,列表中没有任何内容

输出:

{\'Text\': []}
  • 这不是排序,而是过滤。排序意味着将事物按特定顺序排列,例如增加或减少。
  • 鉴于您在上面给我们的代码,您显示的示例输出是不可能的。你确定你正在运行你认为的代码吗?你所展示的内容的缩进有点到处都是,所以我们很难评估可能出了什么问题。
  • 您是否有理由不使用glob.glob(\"/path/to/directory/*.txt\") 来获取所有文本文件?
  • 从函数中提取随机代码并且不包含代码所依赖的变量可能是永远无法解决问题的最快方法。 Minimal Reproducible Example ~ 意味着您需要向我们提供重现您的问题所需的最少量的可执行代码。如果这是您的 MRE,那么您的问题很简单——您还没有编写任何功能代码。

标签: python


【解决方案1】:

我认为os.path.split() 是你想要的。

例子:

files = ("/home/a.txt", "/home/b.txt")

file_dict = {
    "Python": [],
    "Text": []
  }
for file in files:
    split_file = os.path.split(file)
    if ".txt" in split_file[1]:
        file_dict["Text"].append(split_file[1])
print(file_dict)

输出

{'Python': [], 'Text': ['a.txt', 'b.txt']}

如果您使用os.path.splitext(),您将获得root 和扩展名,例如'/home/a''.txt'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多