2016-05-26 3 views
1

特定のパスのすべてのファイルを取り込み、自分のデータタイトル名に基づいて並べ替えようとしています。 だから私のデータのタイトル名は次のとおりです。'CPU_data.txt''Memory_data.txt''Network_data.txt'のように命名され、この指定されたパスでPython:特定の文字列のみを検出しています。辞書のバリエーションではありません。

data_titles = ['CPU','Physical_Disk','Memory','Network','Network#2'] 

ファイルは、'Network#2_data.txt'など

私はのスタイルでdicitonaryを作成しようとしています:

{'Network': 'Network_data.txt', 
'Network#2': 'Network#2_data.txt', 
'Physical_Disk': ['Physical_Disk_data_1.txt','Physical_Disk_data_2.txt'], 
'CPU': 'CPU_data.txt', 
'Memory': 'Memory_data.txt'} 

しかし、私は実際のGETとは何か:

{'Network': ['Network_data.txt','Network#2_data.txt'], 
'Network#2': ['Network#2_data.txt'], 
'Physical_Disk': ['Physical_Disk_data_1.txt','Physical_Disk_data_2.txt'], 
'CPU': ['CPU_data.txt'], 
'Memory': ['Memory_data.txt']} 

は、ここに私のコードです:

table_csv_files={} 
    for file_names in os.listdir(Data_folder): 
     for name in data_titles: 
      if name in file_names: 
       if name in table_csv_files: 
        table_csv_files[name].update(file_names) 
       else: 
        table_csv_files[name]=[file_names] 

       print table_csv_files 

私はそれがdata_title 'Network'だけ'Network_data.txt'のために検出されていることを確認する方法はないも'Network#2_data.txt'

答えて

1

Networkは両方'Network_data.txt''Network#2_data.txt'で見つけることができるためです。ユニークなマッチを得るにはそれ以上のものが必要です。

これら2人の名前は_を追加することによって区別することができますので、あなたは簡単に

if name+'_' in file_names: 
にテストを変更することで、この問題を解決することができますが
関連する問題