Лучший способ прочитать список в файле - PullRequest
0 голосов
/ 06 августа 2020

Я просматривал inte rnet в поисках лучшего способа чтения списка строк в файле. При записи в файл выдает ошибку: TypeError: write() argument must be str, not list

Итак, я сделал список строкой file.write(str([1,2,3])). Итак, теперь в файле у нас есть строка в форме списка, поэтому при чтении мы получим [1, 2, 3]. Примечание. Это строка, а не список, поэтому мы не можем охватить элементы. Поэтому мне было интересно, как лучше всего прочитать эту строку в файле как СПИСОК.

Используя list(file.readline), я получаю что-то вроде ['[', '1', ',', ' ', '2', ',', ' ', '3', ']'] Это не то, что я хочу

, поэтому Я пробую разделить на запятую: print(line.split(',')) Я получаю: ['[1', ' 2', ' 3]'] Я могу перебирать первый и последний элементы в списке и избавиться от скобок. Но я не думаю, что это лучшая идея.

Кто-нибудь знает лучший способ чтения str (list) в файле в виде списка?

Ответы [ 3 ]

0 голосов
/ 06 августа 2020
with open('your_file.txt') as f:
    content = eval(f.readline())
print(content)

Это должно работать.

0 голосов
/ 06 августа 2020

Предполагая, что у нас есть список строк python и целевой файл является файлом .txt, тогда ..

#Writing
input_array = [
    'hello there',
    'string 2',
    'python',
    'foo'
]

with open('file.txt', 'w+') as file:
    for line in input_array:
        file.writelines(line + '\n')

#Reading
output_array = []
with open('file.txt', 'r') as file:
    for line in file.readlines():
        output_array.append(line[:-1])

    print(output_array)

Это не лучшее решение, но оно выполнит свою работу

0 голосов
/ 06 августа 2020

Проблема в том, что вы пытаетесь записать Python s Строковое представление списка в файл, а не сам необработанный список.

Вы можете использовать JSON вместо этого, который не зависит от языка

import json

l = ['1','2','3']

In [6]: with open('file.json', 'w') as f:
   ...:     json.dump(l,f)


In [7]: with open('file.json') as f:
   ...:     l = json.load(f)

In [8]: l
Out[8]: ['1', '2', '3']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...