无法使用python将元素列表写入文件

时间:2014-01-24 20:46:31

标签: python python-3.x

我有元素列表,我想使用python使用print()函数将下面的元素写入文件。

Python gui:版本3.3

示例代码:

D = {'b': 2, 'c': 3, 'a': 1}
flog_out = open("Logfile.txt","w+") 
for key in sorted(D):
    print(key , '=>', D[key],flog_out)
flog_out.close()

我在IDLE gui中运行时的输出:

a => 1 <_io.TextIOWrapper name='Logfile.txt' mode='w+' encoding='cp1252'>
b => 2 <_io.TextIOWrapper name='Logfile.txt' mode='w+' encoding='cp1252'>
c => 3 <_io.TextIOWrapper name='Logfile.txt' mode='w+' encoding='cp1252'>

我没有看到输出文件中写入任何行。我尝试使用flog_out.write(),看起来我们可以在write()函数中传递一个参数。任何人都可以查看我的代码,并告诉我是否遗漏了一些东西。

3 个答案:

答案 0 :(得分:6)

如果要为print指定类文件对象,则需要使用named kwargfile=<descriptor>)语法。 print的所有未命名位置参数将与空格连接在一起。

print(key , '=>', D[key], file=flog_out)

作品。

答案 1 :(得分:2)

来自Python Docs

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

您的所有参数key'=>'D[key]flog_out都会打包到*objects并打印到标准输出。您需要为flog_out添加关键字参数,如下所示:

print(key , '=>', D[key], file=flog_out)

为了防止它像 just-another-object

那样对待它

答案 2 :(得分:0)

D = {'b': 2, 'c': 3, 'a': 1}
flog_out = open("Logfile.txt","w+") 
for key in sorted(D):
    flog_out.write("{} => {}".format(key,D[key]))
flog_out.close()

虽然如果我正在编写它,我会使用上下文管理器和dict.items()

D = {'b': 2, 'c': 3, 'a': 1}
with open("Logfile.txt","w+") as flog_out:
    for key,value in sorted(D.items()):
        flog_out.write("{} => {}".format(key,value))