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 - 目录中特定文件夹的用户输入,然后打印目录的所有内容的主要内容,如果未能解决你的问题,请参考以下文章