![](/img/trans.png)
[英]Trying to read a txt file with numbers into a list and then sort using Python
[英]Read and Save list of numbers as numbers in txt files in python
我在 python 中有浮点数列表。 我想将一些列表保存在 txt 文件中,然后按原样逐个读取它们。 但是在我编写了以下代码之后,我发现 str(i) 转换了一个 str 中的每个数字。 我不能像他们写的那样读他们。 Ps 我有 10,000 个结果列表,所以我想将每个列表保存在一行中。
result = [-0.33434,0.4434, 4343....]
with open("out.txt", w) as out:
for i in result:
out.write(str(i)+' ')
out.write("\n")
对于多个列表,将它们全部放在一个列表中并将其写入 pkl/txt 文件。
import pickle
import numpy as np
results = [
[1.456,2.245,-3.441],
[4.53, 4.55, 1.22]
]
np.savetxt("results.txt", results) # write
#read
result = np.loadtxt("results.txt")
print(result.tolist())
如果您想将名称与列表关联,请考虑使用dict
。 但是,您只能使用pickle
。
import pickle
results = {
"result1": [1.456,2.245,-3.441],
"result2": [4.53, 4.55, 1.22],
}
# write
with open("results.pkl", "wb") as resultFile:
pickle.dump(results, resultFile)
# read
with open("results.pkl", "rb") as resultFile:
result = pickle.load(resultFile)
print(result)
为此,请使用pickle
或numpy
,因为这更适合此任务。
使用pickle
:
import pickle
result1 = [1.456,2.245,-3.441]
# write
with open("result1.pkl", "wb") as resultFile:
pickle.dump(x, resultFile)
# read
with open("result1.pkl", "rb") as resultFile:
result = pickle.load(resultFile)
print(result)
使用numpy
:
import numpy as np
result1 = [1.456,2.245,-3.441]
np.savetxt("result1.txt", result1) # write
#read
result = np.loadtxt("result1.txt")
print(result.tolist())
如果您不想使用库来执行此操作,您可以简单地通过已知分隔符join
每个列表,然后将结果字符串写入文件。
在这里,我假设您有一个名为allResults
的列表列表,其形式为
allResults = [
[-0.332,434,0.4434,4865],
[9.456,-0.540,-7.06540,5.05453],
# ... and so on
]
separator = ","
with open("out.txt", "w") as out_file:
for l in allResults:
out_string = separator.join(str(x) for x in l) + "\n"
out_file.write(out_string)
现在, out.txt
包含:
-0.332,434,0.4434,4865
9.456,-0.54,-7.0654,5.05453
然后要读取文件,您可以读取每一行,用分隔符将其拆分,将拆分字符串的每个元素转换为浮点数,然后将该新列表放入列表列表中:
all_lists = []
with open("out.txt", "r") as in_file:
for line in in_file:
new_list = [float(x) for x in line.split(separator)]
all_lists.append(new_list)
现在你有你的列表列表:
all_lists: [[-0.332, 434.0, 0.4434, 4865.0], [9.456, -0.54, -7.0654, 5.05453]]
如果您想再次阅读,请阅读该行并将其拆分为''(空格)。 这应该为您提供浮点数的字符串表示形式。 之后您可以使用 float(num) 方法将其转换回数字
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.