Динамическая запись в текстовый файл на основе полученной информации словаря - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь записать работу в текстовый файл на основе информации словаря.Информация о словаре поступает с сервера и не всегда одинакова.Он содержит file_count и file_paths, которые file_paths являются списком.Например,

{'file_paths': ['/file/path/one', '/file/path/two'], 'file_count': 2} 

У меня есть базовая линия, чтобы выписать блок текста, который содержит переменные, которые будут вставлены на основе информации словаря.например,

text_baseline = ('This is the %s file\n'
                'and the file path is\n'
                'path: %s\n')

Эта базовая линия должна быть дублирована в зависимости от количества файлов, полученных из словаря и записанных в текстовый файл.

Итак, дляНапример, если в словаре есть три файла, он будет иметь три блока текста, каждый с обновленной информацией о номере файла и путях.

Я знаю, что должен сделать что-то вроде этого:

f = open("myfile.txt", "w")
for i in dict.get("file_count"):
    f.write(text_baseline)     # this needs to write in the paths and the file numbers

Мне трудно понять, как обновить пути и номера файлов на основе информации, полученной с использованием базовой линии.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Здесь можно использовать перечислимый и строковый формат:

paths = {'file_paths': ['/file/path/one', '/file/path/two'], 'file_count': 2}
text_baseline = ('''This is the {num} file
and the file path is
path: {path}
''')
with open('myfile.txt','w') as f:
    for i, path in enumerate(paths['file_paths'], 1):
        f.write(text_baseline.format(num=i, path=path))
0 голосов
/ 04 октября 2018

используйте str.format () для форматирования строки.

data = {'file_paths': ['/file/path/one', '/file/path/two'], 'file_count': 2} 
text_baseline = "this is the {}th file and the path is {}"
with open('path','w') as f:
    for i in range(int(dict.get('file_count'))):
         f.write(text_baseline.format(i,data['file_paths']))
...