如何在python3中每次按列写入多行代码

时间:2018-04-02 23:14:40

标签: python python-3.x

很抱歉,标题看起来很困惑。我想创建一个非常大的制表符分隔文件。每次我想写多行(比如3行)。因为对于我的情况,按列而不是每行写更容易。具体来说,如果每行有5列(字段),则每次我想为每列写入第1行,第2行,第3行,而不是为每行写入第1列,第2列,...列5。有没有办法在python3中实现这个?谢谢你的时间!

2 个答案:

答案 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))