如何将文件列表从字典移动到目录?

Posted

技术标签:

【中文标题】如何将文件列表从字典移动到目录?【英文标题】:How can I move a list of files from a dictionary to a directory? 【发布时间】:2022-01-17 04:00:38 【问题描述】:

第一次在这里提问,如果我做的不对,请随时告诉我。

我实际上是在尝试将 txt 文件从字典(值)附加到具有 os 和路径的特定目录。我试过这个,但我得到一个类型错误。 TypeError: join() argument must be str, bytes, or os.PathLike object, not 'list'

下面是我的代码。我期待您的回复:)

import os

ROOT = os.getcwd()
DATA_ROOT = os.path.join(ROOT, "src/data/initial")

def classify(arg: dict):
    for key, value in arg.items():
        folder = os.path.join(DATA_ROOT, key)
        file = os.path.join(folder, value)
        
        os.rename(DATA_ROOT, file)
    return

# Dictionary with files that I am trying to move/create in the path
# .....src/data/initial/personal and .....src/data/initial/work
categories = 
    "personal": ["todos.txt", "bookmarks.txt"],
    "work": ["customers.csv", "jobs.csv"]


print(classify(categories))

【问题讨论】:

file = os.path.join(folder, value) # value 是类别的值,所以它是一个列表——这不是 os.path.join 所期望的 【参考方案1】:

只需遍历value(因为这些是列表),然后按您的意愿继续:

def classify(arg: dict):
    for key, value in arg.items():
        for f in value:
            file = os.path.join(DATA_ROOT, key, f)
            # Do stuff
    return

PS:您可能需要考虑使用 shutil 内置库进行文件/文件夹操作(例如 shutil.move)。

【讨论】:

谢谢,我去看看。这是学习操作系统和路径的练习的一部分。由于某种原因,它仍然无法正常工作。我也试过 os.replace(..., ...) 。一旦我找到有效的解决方案就会更新 folder = os.path.join(DATA_ROOT, key) 应该在外循环,而不是内循环。 @wwii 是的。选择了更简单的东西。

以上是关于如何将文件列表从字典移动到目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 3 中从磁盘读取和编辑列表?

如何在没有参数列表太长的情况下移动多个文件?

sh 将文件列表(在文本文件中)移动到目录?

如何将带有嵌套字典的列表写入 csv 文件?

ASP对指定文件夹内文件列表显示

从列表的字典中提取列表,然后附加到数据框