Написание и чтение целых чисел - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь создать случайный список целых чисел;но этот список должен оставаться постоянным после генерации, а не генерироваться заново каждый раз, когда я запускаю программу.Для этого моя идея состоит в том, чтобы сгенерировать его один раз, записать в файл, закомментировать эту часть, а затем читать ее каждый раз, когда я ее использую.

К сожалению, я не могу заставить читать и писать целые числа вРабота.Вот самый простой способ показать проблему:

Сначала я пишу список целых чисел следующим образом:

learning=[]
for i in range(20):
    learning.append(i)
np.savetxt('learning.txt',learning)

Это создает текстовый файл и заполняет его числами;но они выглядят как 0.00000000000e+00, 1.000000000000e+00 и т. д. Запись learning.append(int(i)) вместо этого не помогает.

Затем я закомментирую вышеприведенный блок и пытаюсь прочитать цифры обратно

l=open('learning.txt','r')
learning=[]
for line in l:
    print line.rstrip('\n')

Возвращает список чисел, но в виде 0.000000000e+00, 1.000000000e+00 и т. Д.,тогда как я хотел, чтобы они были целыми числами.

Если я вместо этого наберу print int(line.rstrip('\n')), я получу сообщение об ошибке invalid literal for int() with base 10: '0.0000000000000e+00'

Ответы [ 4 ]

0 голосов
/ 26 апреля 2019

Вы можете сохранить текст, используя целочисленное форматирование:

np.savetxt(filename, array, fmt=“%i”)
0 голосов
/ 26 апреля 2019

Если вы используете Numpy, вам потребуется указать формат для целочисленного вывода:

np.savetxt(filename, array, fmt=“%d”)
0 голосов
/ 26 апреля 2019

Вы пытались написать текстовый файл с этим?

learning = [i for i in range(20)]

try:
    with open('learning.text', 'w') as f:
        for i in learning:
            f.write('{}\n'.format(i))

    print('Done')

except Exception as e:
    print('Error: {}'.format(e))

И я попытался создать функцию для чтения, она отлично работает

def read_text(file_name):
    my_res = []
    try:
        with open('{}'.format(file_name), 'r') as f:
            for i in f:
                my_res.append(i.rstrip('\n'))

        print('Read successfully')

    except Exception as e:
        print('Error: {}'.format(e))

    return list(map(lambda i: int(i), my_res))

Вот мой полный пример

learning = [i for i in range(20)]

def create_text(mylist):
    try:
        with open('learning.text', 'w') as f:
            for i in learning:
                f.write('{}\n'.format(i))

        print('Text created')

    except Exception as e:
        print('Error: {}'.format(e))

    return None


def read_text(file_name):
    my_res = []
    try:
        with open('{}'.format(file_name), 'r') as f:
            for i in f:
                my_res.append(i.rstrip('\n'))

        print('Read successfully')

    except Exception as e:
        print('Error: {}'.format(e))

    return list(map(lambda i: int(i), my_res))


test = read_text('learning.text')

print(test)

Мой результат

Read successfully
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
0 голосов
/ 26 апреля 2019

Если вы действительно хотите использовать NumPy, укажите формат:

learning = list(range(10))
np.savetxt('learning.txt', learning, fmt='%d')

Однако эти задачи легко выполнить без NumPy:

learning = list(range(10))
with open('learning.txt', 'w') as outfile:
    outfile.write('\n'.join([str(i) for i in learning]))

Чтобы загрузить обратно:

with open('learning.txt', 'r') as infile:
    list_of_numbers = [int(i) for i in infile]

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

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