非字符串序列的file.writelines(foo),python中的错误

非字符串序列的file.writelines(foo),python中的错误,python,stdout,counter,Python,Stdout,Counter,好吧,我知道我的错误和它的意思。但是,有人能告诉我如何将一组非字符串参数写入文件吗 产生错误的代码: with open('count.txt', 'w') as count: for k,v in makeddict.items(): print "MID -",k + ':', Counter(v) readout = "MID -",k + ':', Counter(v) count.writelines(readout) 我完全理解计数器是我在尝试将行写入文件的

好吧,我知道我的错误和它的意思。但是,有人能告诉我如何将一组非字符串参数写入文件吗

产生错误的代码:

with open('count.txt', 'w') as count:
for k,v in makeddict.items():
    print "MID -",k + ':', Counter(v)
    readout = "MID -",k + ':', Counter(v)
    count.writelines(readout)
我完全理解计数器是我在尝试将行写入文件的标准形式时出错的原因。因此,我尝试将我的stdout写入该文件,而不是如下所示

尝试修复我的代码:

for k,v in makeddict.items():
    print "MID -",k + ':', Counter(v)
    sys.stdout = open('count.txt', 'w')
这就成功了,我得到了一行标准输出的第一行来写入我的文件。但是,我希望看到count.txt文件中所有其他19行

那么有人能告诉我如何让我的代码将我所有的标准输出打印到一个文件中吗?我应该在里面放一个.append吗?我现在就试试这个

或者有人能告诉我一种更好的方法,当打印块有非字符串参数(如Counter)时,可以将它打印到文件中。

sys.stdout=open'count.txt',w'截断文件,这样在调用它时,以前所做的每一个更改都会被清除

你应该做:

sys.stdout = open('count.txt', 'w')
for k,v in makeddict.items():
    print "MID -",k + ':', Counter(v)
或者


除了Thomas Orozco的答案之外,您的readout变量还包含一个元组,而不是字符串,因此我怀疑结果不是您想要的结果。您可能想尝试以下方法:

readout = "MID -" + k + ':' + Counter(v)

这将尝试用所有部分组成一个字符串。但是,对于没有_ustr_uuu或_urepr_uuu方法的对象,它将失败。

您可以编写Line streadout,这就是打印所做的。但是,如果您想在以后可靠地读回数据,您可能需要考虑一下您是如何做到这一点的,并尝试以更结构化的格式(如CSV或JSON)编写它。我是脚本领域的新手,感谢您的指点。我真的需要阅读JSON和我在这个网站上看到的很多其他常用术语。太棒了,谢谢。我想这就是发生的事情。还感谢您提供了新的语法>>我还没有在Python中看到这一点。我想它只是意味着将下一个参数打印到f?@jon_shep是的,它是打印的重定向!好的一点,我理想地希望计数器的所有内容都以制表符分隔的格式,以便使用Sed和Awk进行下游编辑。有什么想法吗?你可能需要迭代计数器项,并将它们附加到你正在构建的字符串中。亲爱的,我想我知道怎么做这意味着迭代是一个真正的字符串,对吗?然后我可以使用以前的方法将行写入文件?迭代的结果应该是一个附加字符串,是的。Python没有字符串理解。:-然后你可以把它写入一个文件。
readout = "MID -" + k + ':' + Counter(v)