Python 在文本文件上写入列表的内容
我想把列表的内容写在一个文本文件上。 我目前的做法如下:Python 在文本文件上写入列表的内容,python,text,Python,Text,我想把列表的内容写在一个文本文件上。 我目前的做法如下: for k in li: outp.write(str(k)) out.write('\n') 但是,这需要很长时间才能运行(我有数千万行) 有没有更快的办法 采样线 列表来自稀疏矩阵,因此有大量的零。非空元素仅为1 此类列表的示例:[0 0 0 0 0 1 0 1 1 0 0] 数字由制表符分隔您只需写一次,省去所有手动转换,就可以获得相当不错的速度: out.write('\n'.join(li)) 可能会有进一步的优化,
for k in li:
outp.write(str(k))
out.write('\n')
但是,这需要很长时间才能运行(我有数千万行)
有没有更快的办法
采样线
列表来自稀疏矩阵,因此有大量的零。非空元素仅为1
此类列表的示例:[0 0 0 0 0 1 0 1 1 0 0]
数字由制表符分隔您只需写一次,省去所有手动转换,就可以获得相当不错的速度:
out.write('\n'.join(li))
可能会有进一步的优化,但实际上,对于具有如此大数组的内容,您应该考虑基于二进制的文件格式
具体来说,这似乎是一个很好的选择,但还有更快的方法。我想知道存储
1
s的坐标是否会产生所需的加速,正如您提到的,这是一个稀疏矩阵。考虑以下事项:
for k in li:
outp.write(str(k))
out.write('\n')
写入文件:
def writeMatrix(matrix):
ones = [[i for i,num in row if num==1] for row in matrix]
with open('path/to/file', 'w') as outfile:
for row in ones:
outfile.write(' '.join(str(i) for i in row))
outfile.write('\n')
从文件中读取:
def readMatrix(infilepath, width):
answer = []
with open(infilepath) as infile:
for line in infile:
row = [None]*width
for i in set(int(i) for i in line.split()):
row[i] = 1
answer.append(row)
return answer
它必须是人类可读的吗?i、 e.之后该文件的用途是什么?@doctor在文本文件read中选择yes请在列表中列出几行示例。我们也许能够利用数据的某些属性,“在文本文件中读取”是什么意思?如果机器读取,二进制(如pickle)可能会更快。然后你就不需要先把它变成一个字符串了。@bigTree那么你可能会对这个条目感兴趣:。写入磁盘的速度很慢。没有一条黄金法则可以用来加速它。但您可能会在那里发现一些优化…它输出一个错误,上面写着“类型错误:序列项0:预期的str实例,int found”