Python - 将一系列数字附加到文本文件的最佳方法?

时间:2017-06-05 10:06:51

标签: python

假设我有一系列数字的文本文件,如下所示:

18,18,19,19,16,20,19,20,18,20,21

这只是用逗号分隔的数百个数字的预览。我希望能够在[list]中操作python中的数据。所以我有一个变量src,我想从文本文件中追加整数值。

像这样:

text_file = open("sequence.txt","r")
src = []

for entry in text_file.read():
    if(entry != ','):
        src.append(int(entry))

显然这可以摆脱文本文件中每个条目之间的',',但是文本文件中的20这样的值将作为两个单独的条目[2,0]附加到列表中。

追加这些价值观的最佳方式是什么? 谢谢!

3 个答案:

答案 0 :(得分:1)

text_file = open("sequence.txt", "r")
src = text_file.read()
src = src.split(',')
src = map(int, src) #this works on python 2.x, for python3 do src = list(map(int, src))
print src
text_file.close()

输出:

[18, 18, 19, 19, 16, 20, 19, 20, 18, 20, 21]

答案 1 :(得分:1)

您可以逐行迭代文本文件;每一行都被读作一个字符串。您可以使用该字符串的 .split()方法将其分隔为字符串列表(在逗号上),您可以使用 int()函数将每个结果字符串解释为整数。

所有这些都是这样的:

src = list()
with open("sequence.txt","r") as text_file:
    for line in text_file:
        src.append([int(x) for x in line.split(',')])

......虽然这并没有优雅地处理任何损坏的输入。

(使用您自己的 int()函数或其他方式的包装器进行异常处理留作练习。

顺便提一下,这个问题(以及我的回答)的细节是关于如何从文件中读取整数;其中一个值用逗号分隔,但通常不符合传统的" CSV" (逗号分隔值)文件格式。

要向文件附加更多值,只需在追加模式下打开文件并将新值写入其中(默认情况下将新值添加为新行)。无法以换行符终止的文本文件对于许多常见的实用程序和编程技术都是有问题的。 (实际上,将最后一行视为特殊情况是必要的,就好像它是来自二进制文件而不是常规文本)。

用于写入这些逗号分隔的text / integers文件的代码如下所示:

with open('sequence.txt','a') as output:
    output.write(', '.join(src))
    output.write('\n')

......除非我没有完全理解你的要求,否则这应该足够了。

答案 2 :(得分:0)

如果文本文件只包含一行,则可以更简单地进行操作

src = list(map(int, open("sequence.txt","r").read().split(",")))

当然最好在阅读后关闭文件,所以

with open("sequence.txt","r") as f:
    src = list(map(int, f.read().split(",")))