如何在python3中每次按列将多行写入文件

如何在python3中每次按列将多行写入文件,python,python-3.x,Python,Python 3.x,很抱歉,如果您对标题感到困惑。我想创建一个非常大的制表符分隔文件。每次我想写多行(比如说3行)。因为在我的例子中,按列而不是每行写更容易。具体来说,如果每行有5列(字段),每次我都要为每列写入第1行、第2行、第3行,而不是为每行写入第1列、第2列、第5列。在python3中有没有实现这一点的方法?谢谢你的时间 由于操作系统上的文件结构,文件是逐行读取和写入的。 对于您的问题:您可以手动缓冲列,然后逐行写入。Python本身对您的问题没有帮助…以下是一个示例,说明如何缓冲按列顺序进行的写入,并按行

很抱歉,如果您对标题感到困惑。我想创建一个非常大的制表符分隔文件。每次我想写多行(比如说3行)。因为在我的例子中,按列而不是每行写更容易。具体来说,如果每行有5列(字段),每次我都要为每列写入第1行、第2行、第3行,而不是为每行写入第1列、第2列、第5列。在python3中有没有实现这一点的方法?谢谢你的时间

由于操作系统上的文件结构,文件是逐行读取和写入的。
对于您的问题:您可以手动缓冲列,然后逐行写入。Python本身对您的问题没有帮助…

以下是一个示例,说明如何缓冲按列顺序进行的写入,并按行顺序进行实际写入(打印):

首先,让我们按列顺序写入缓冲区:

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