我正在尝试创建一个随机的整数列表;但是此列表一旦生成就应该保持不变,而不是每次运行程序时都重新生成。为此,我的想法是生成一次,将其写入文件,注释掉该部分,然后在每次使用时将其读回。
不幸的是,我无法读写整数来工作。这是解决问题的最简单方法。
我首先按如下所示编写整数列表
learning=[]
for i in range(20):
learning.append(i)
np.savetxt('learning.txt',learning)
这确实创建了txt文件并用数字填充了该文件;但它们显示为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'
答案 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”)