сохранение данных в виде элементов для последующего чтения - PullRequest
0 голосов
/ 02 июня 2018

У меня проблемы с сохранением элементов в файл для последующего чтения.Когда я сохраняю файл, вместо того, чтобы перечислять элементы как отдельные элементы, он добавляет данные вместе в одну длинную строку.Согласно моим поискам в Google, это не должно быть добавление элементов.Что я делаю не так?

Заранее спасибо

Код:

with open('Ped.dta','w+') as p:  
    p.write(str(recnum))  # Add record number to top of file  
        for x in range(recnum):    
            p.write(dte[x])        # Write date  
            p.write(str(stp[x]))   # Write Steps number  

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Попробуйте добавить символ новой строки ('\n') в конце строки, как показано в документах .Это должно решить проблему 'перечисления элементов как отдельных элементов' , но созданный вами файл, тем не менее, может быть не очень структурирован.

Для дальнейших поисков в Google вы можете проверить сериализация , а также форматы json и csv, включенные в стандартную библиотеку Python.

Ваш вопрос был бы целесообразным, если бы вы приводили очень маленький пример recnum переменная + оригинал f.close() не требуется, поскольку у вас есть оператор with, см. здесь, на SO .

0 голосов
/ 02 июня 2018

Поскольку вы не показываете свои данные или выходные данные, я не могу быть уверен.Но кажется, что вы пытаетесь использовать метод write, такой как функция print, но есть важные различия.

Самое важное, write не следует за своими письменными символами ни с каким разделителем (например, пробелом)по умолчанию для print) или end (например, \n по умолчанию для print).Поэтому между вашими данными и числом шагов или между строками нет места, потому что вы их не написали, а Python их не добавил.

Так что добавьте их.Попробуйте строки

p.write(dte[x]) # Write date
p.write(' ') # space separator
p.write(str(stp[x])) # Write Steps number
p.write('\n') # line terminator

Обратите внимание, что я не знаю формат написанной вами "даты", поэтому вам может потребоваться преобразовать ее в текст перед ее написанием.


Теперь, когда у меня есть время, я реализую предложение @ abarnert (в комментарии) и покажу вам, как получить преимущества функции print и все еще писать в файл.Просто используйте параметр file= в Python 3 или в Python 2 после выполнения оператора

from __future__ import print_function

Используя print, вы можете сделать мои четыре строки выше в одной строке, так как print автоматически добавляетразделитель пробела и конец строки:

print(dte[x], str(stp[x]), file=p)

Предполагается, что ваша дата dte[x] будет напечатана в виде текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...