Python - 目录中特定文件夹的用户输入,然后打印目录的所有内容

Posted

技术标签:

【中文标题】Python - 目录中特定文件夹的用户输入,然后打印目录的所有内容【英文标题】:Python - User input for specific folder in directory, then print all contents of directory 【发布时间】:2017-01-21 06:29:56 【问题描述】:

脚本应该接受用户输入并以特定格式打印出文件夹的所有内容。示例:Folder1(主文件夹)-->Folder2-->Folder3-->Folder4.

目录包含格式为 mnemonic:contents

的助记符(Folder1)

内容可能包含子文件夹。

我在这里抛出这个错误:Valueerror too many values to unpack (expected 2, got 1)

在这一行:“对于single_mnemonic,os.listdir(startpath)中的内容:

def search_specific_mnemonic(startpath):
user_entered_mnemonic = input("Enter Client Mnemonic: ")
facility_types = ["clinic", "hospital", "lab", "hub_millennium", "client_millennium"]

for single_mnemonic, contents in os.listdir(startpath):

    CRED = "\033[91m"
    CEND = "\033[0m"
    print(CRED + "\n",user_entered_mnemonic + CEND)

    for facility_type in facility_types:
        if contents[facility_type]:
            box_display_char = "X"
        else:
            box_display_char = "_"

        print("  [0] - 1".format(box_display_char, facility_type.replace("_", " ").title()))
        if contents[facility_type]:
            for practice_name in sorted(contents[facility_type]):
                print("     ".format(practice_name))
                for practice_scripts in sorted(contents[facility_type]):
                    print("         ".format(contents[facility_type][practice_name]))
                    break

【问题讨论】:

@PM2Ring 我更新了脚本并取出了 parse_directory,因为此目的不需要它。这是错误: Valueerror too many values to unpack (expected 2, got 1) in this line "for single_mnemonic, contents in os.listdir(startpath):" 啊,好吧,我之前没注意到。 :oops: 仔细检查后,我不了解您的代码的几个元素。 os.listdir(startpath) 返回startpath 中的文件/文件夹名称列表。您通常会使用for fname in os.listdir(startpath): 之类的内容循环这些字符串。那么为什么你有single_mnemonic, contents?稍后在您的代码中,您似乎将contents 视为字典。 @PM2Ring 老实说,我不知道,对 python 来说相当新。我想知道我是否需要重新开始.. 如果您能给我们一个关于 startpath 文件夹包含的内容的小样本,这将有助于我们了解您正在尝试做什么,典型的用户输入将被键入以响应 @987654328 @,以及该文件夹内容和用户输入的预期输出。 【参考方案1】:

如果您确定文件夹中的所有文件名格式相同 (即助记符:内容) 你可以试试:for single_mnemonic, contents in [format_name.split(':') for format_name in os.listdir(startpath):

这将返回一个数组,其中每一项都是格式化名称两侧的数组:[[mnemonic, content], [mnemonic, content]]

【讨论】:

以上是关于Python - 目录中特定文件夹的用户输入,然后打印目录的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

C# 检查用户输入的特定文件名并打开文件

Linux创建指定用户特定指定目录权限

如何在终端中制作 Python 脚本“tab-complete”目录?

python如何让用户输入点坐标

使用用户输入更改文本文件中的特定单词

尝试读取 .txt 文件并根据用户输入的字母提取特定行