如何将循环中变量的输出保存到python中的文本文件的列中?

如何将循环中变量的输出保存到python中的文本文件的列中?,python,text-files,Python,Text Files,我从图形中生成随机边并打印它们,但每次尝试将其保存到文本文件时,都会出现类似TypeError:需要字符缓冲区对象的错误。代码如下: import re import md5 import pickle import networkx as nx import itertools from random import choice ff=open("testfile.txt","r+") G=nx.read_gpickle("authorgraph_new.gpickle") for node

我从图形中生成随机边并打印它们,但每次尝试将其保存到文本文件时,都会出现类似
TypeError:需要字符缓冲区对象
的错误。代码如下:

import re
import md5
import pickle
import networkx as nx
import itertools
from random import choice

ff=open("testfile.txt","r+")
G=nx.read_gpickle("authorgraph_new.gpickle")
for nodes in G:
    random_edge=choice(G.edges())
    ff=open("testfile.txt","a")
    ff.write(random_edge)
我需要将random_edge的输出保存在文本文件中,最好保存在列中,因为
random_edge
的值的格式为
(abcdef,pqrstu)
。我想把这两个值放在同一行的单独列中,下一个值放在同一列中。我知道我可以使用
“\n”
将输出获取到newline,但是当我使用

ff.write(random_edge + "\n")

我得到一个错误
TypeError:只能将tuple(而不是“str”)连接到tuple

在这种情况下,您可以尝试在两行中执行此操作,如:

for nodes in G:
    ff.write(random_egde)
    ff.write('\n')
希望这对您的案例有效。

这里第一行写入数据,第二行向数据中添加新行。

Joel的评论是正确的:您将结果(元组)与新行字符(字符串)连接在一起。Python不喜欢以这种方式混合数据类型。如果您正在编写更复杂的结构化数据,那么将来可能还需要研究python的csv模块。

您可能希望使用
print(…,file=ff)
而不是
ff.write(…)
。(我假设您使用的是Python3.x。)错误消息准确地告诉您需要知道的内容
random_edge
是一个元组,“\n”是一个字符串。您希望
元组+字符串的结果是什么?