我有元素列表,我想使用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()函数中传递一个参数。任何人都可以查看我的代码,并告诉我是否遗漏了一些东西。
答案 0 :(得分:6)
如果要为print
指定类文件对象,则需要使用named kwarg(file=<descriptor>
)语法。 print
的所有未命名位置参数将与空格连接在一起。
即
print(key , '=>', D[key], file=flog_out)
作品。
答案 1 :(得分:2)
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))