很抱歉,标题看起来很困惑。我想创建一个非常大的制表符分隔文件。每次我想写多行(比如3行)。因为对于我的情况,按列而不是每行写更容易。具体来说,如果每行有5列(字段),则每次我想为每列写入第1行,第2行,第3行,而不是为每行写入第1列,第2列,...列5。有没有办法在python3中实现这个?谢谢你的时间!
答案 0 :(得分:0)
由于操作系统上的文件结构,文件会逐行读取和写入。 对于您的问题:您可以手动缓冲列,然后逐行写入。 Python本身没有帮助你的问题......
答案 1 :(得分:0)
以下是一个示例,说明如何以列顺序缓冲写入并按行顺序进行实际写入(打印):
首先,让我们按列顺序写入缓冲区:
buffer = []
for col in range(1,3):
line = []
for row in range(1,4):
line.append("r%s-c%s"%(row,col))
buffer.append(line)
如果按原样打印,行和列将颠倒过来:
for row in buffer:
print("\t".join(row))
# r1-c1 r2-c1 r3-c1
# r1-c2 r2-c2 r3-c2
但是你可以在打印前使用numpy转置缓冲区:
import numpy as np
buffer = np.transpose(buffer)
然后可以从调整后的缓冲区按行顺序打印(或写入文件):
for row in buffer:
print("\t".join(row))
# r1-c1 r1-c2
# r2-c1 r2-c2
# r3-c1 r3-c2
[编辑]发现更简单的事情......
不使用numpy或转置缓冲区,你可以使用zip()直接按顺序遍历它:
for row in zip(*buffer):
print("\t".join(row))