读写整数

时间:2019-04-26 02:33:08

标签: python numpy

我正在尝试创建一个随机的整数列表;但是此列表一旦生成就应该保持不变,而不是每次运行程序时都重新生成。为此,我的想法是生成一次,将其写入文件,注释掉该部分,然后在每次使用时将其读回。

不幸的是,我无法读写整数来工作。这是解决问题的最简单方法。

我首先按如下所示编写整数列表

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

这确实创建了txt文件并用数字填充了该文件;但它们显示为0.00000000000e+001.000000000000e+00等。写learning.append(int(i))并没有帮助。

然后我注释掉上面的块并尝试读回数字

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

这将返回数字列表,但格式为0.000000000e+001.000000000e+00等,而我希望它们为整数。

如果我改为输入print int(line.rstrip('\n')),则会收到错误消息invalid literal for int() with base 10: '0.0000000000000e+00'

4 个答案:

答案 0 :(得分:0)

如果您真的想使用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]

您可能还想考虑使用种子作为随机数生成器,以避免不得不保存到文件中。

答案 1 :(得分:0)

如果使用的是Numpy,则需要指定格式以进行整数输出:

np.savetxt(filename, array, fmt=“%d”)

答案 2 :(得分:0)

您是否尝试过以此编写文本文件?

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]

答案 3 :(得分:0)

您可以使用整数格式保存文本:

np.savetxt(filename, array, fmt=“%i”)