Saya memiliki beberapa file seperti di bawah ini di direktori tempat saya melakukan perulangan melalui direktori untuk memproses masing-masing.

  • tenents.txt
  • people.txt
  • customers.txt
  • clients'.txt

Saya mencoba membuat kamus secara dinamis seperti di bawah ini saya telah mencari tinggi dan di bawah dan mencoba contoh serupa di sini tetapi tidak bisa mendapatkan hasil yang diinginkan. Butuh bantuan seseorang dalam mengidentifikasi apa yang saya lakukan salah:

Keluaran yang diharapkan:

[{'input' : 'tenents.txt' , 'config':'tenents.json'},{'input' : 'people.txt' , 'config':'people.json'}
 {'input' : 'customers.txt' , 'config':'customers.json'},{'input' : 'clients.txt' , 'config':'clients.json'}]

Keluaran aktual dari kode saya:

[{'config': 'tenents.json','input': 'tenents.txt'}]
[{'config': 'people.json','input': 'people.txt'}]
[{'config': 'customers.json','input': 'customers.txt'}]
[{'config': 'clients.json','input': 'clients.txt'}]

Juga mengapa kunci dalam urutan yang salah dari kiri ke kanan. mengapa kunci skema datang sebelum kunci input bahkan setelah saya mencoba mengurutkannya.

Cuplikan kode saya yang tidak berfungsi:

import os
from pprint import pprint

filelist = []
for root, dirs, files in os.walk(path):
    for file in files:
        if file.endswith(".txt"):
            keys = ['input', 'config']
            filename = os.path.join(root, file)
            cname = filename.rstrip('.txt') + '.json'
            names = [[filename, cname]]

            filelist = [{k: v for k, v in zip(keys, n)} for n in names]
            pprint(filelist)

Saya akan menghargai bantuan seseorang. Saya menggunakan anaconda python 3.

-1
passive54 22 April 2020, 22:34

1 menjawab

Jawaban Terbaik

Kode berikut tampaknya berfungsi:

file_list = []
for root, dirs, files in os.walk(path):
    for file in files:
        if file.endswith('.txt'):
            file_list.append({'input': file, 'config': file.replace('.txt', '.json')})
print(file_list)

Saya baru saja membuat daftar file seperti yang Anda lakukan, dan menambahkan kamus ke dalamnya untuk setiap file dengan nilai masing-masing.

0
Holden 22 April 2020, 19:45