2017-01-21 8 views
0

スクリプトはユーザー入力を受け入れ、特定の形式でフォルダのすべての内容を出力することになっています。例:Folder1(メインフォルダ) - > Folder2 - > Folder3 - > Folder4。Python - ディレクトリ内の特定のフォルダのユーザー入力、ディレクトリのすべての内容の印刷

ディレクトリは、ニーモニック形式でニーモニック(Folder1に)が含まれています。内容

内容は、サブフォルダが含まれていてもよいです。

このエラーを投げている私はここにある:とValueErrorあまりにも多くの値を展開する(、2を期待得た1)この行の

:「os.listdirでsingle_mnemonic、内容(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 
+0

PM2Ring @私は更新この目的のために必要でなかったので、parse_directoryを取り出しました。これはエラーです:Valueerrorこの行に展開するには値が多すぎます(2が期待されます)。 "single_mnemonic、os.listdirの内容(startpath):" – FFF

+0

ああ、以前は気づいていませんでした。あなたのコードのいくつかの要素を理解していません。 'os.listdir(startpath)'は 'startpath'にファイル/フォルダ名のリストを返します。通常は、これらの文字列を 'for fname in os.listdir(startpath):'のようなものでループします。だから、なぜあなたは 'single_mememonic、contents'を持っていますか?後であなたのコードの中で、あなたは 'コンテンツ 'を辞書のように扱っているようです。 –

+0

@ PM2Ring正直なところ、私は知らない、かなり新しいpythonを知っている。私がこれで全部始める必要があるかどうか疑問に思っています。 – FFF

答えて

0

あなたが特定されている場合は、フォルダ内のすべてのファイル名が同じ形式
である(つまり、ニーモニック:コンテンツ)
あなたは試みることができる:を for single_mnemonic, contents in [format_name.split(':') for format_name in os.listdir(startpath):

これは、すべてのアイテムだ配列を返しますが、フォーマットされた名前の両側の配列である:[[ニーモニック、コンテンツ]、[ニーモニック、コンテンツは]]

関連する問題