2

我是 Python 新手,我知道那段代码非常简单并且缺少一些语句,实际上我需要从字典中写入文件。此代码运行但仅将 dict 中的最后一项写入文件,即"heba6677...". 谢谢你的帮助。

ab={'engy':'011199887765',
    'wafa2':'87878857578',
    'heba':'6677553636'}
for name, mobile in ab.items():
    print ('Contact %s at %s' % (name, mobile))
    f=open('D:\glo.txt','w')
    f.write(name)
    f.write(mobile)
f.close()
4

2 回答 2

7

如果您想继续向文件中添加行,请使用该a模式打开它,如文档中所述:

for (name, mobile) in ab.iteritems():
    with open(...., "a") as f:
        print ('Contact %s at %s' % (name, mobile))
        f.write(name)
        f.write(mobile)

使用was 模式意味着writing:您的文件将被覆盖。

于 2012-09-26T10:16:53.607 回答
2

每次以w模式打开文件时,其先前的内容都会被删除。所以你应该只做一次,在循环之前。最重要的是,使用以下with语句:

ab={'engy':'011199887765',
    'wafa2':'87878857578',
    'heba':'6677553636'}
with open('D:\glo.txt','w') as f:
    for name, mobile in ab.items():
        print ('Contact %s at %s' % (name, mobile))
        f.write(lis)
        f.write(mobile)

另外,我不知道是什么lis,但我会假设它在正确的位置。请注意,您的代码仅将lis数字写入文件,而不是名称。lis在循环中不会改变,所以每次迭代都一样。

于 2012-09-26T09:55:21.950 回答