【问题标题】:Python for-loopPython for 循环
【发布时间】:2016-10-22 05:04:18
【问题描述】:

我正在尝试编写一个联系人程序,我必须将一些信息写入 txt 文件。 我创建了一个列表和两个字典

name = ['charles', 'frank', 'chris']
phonenumbers = {'charles' : '12345', 'frank' : '23456', 'chris' : '34567'}
emails = {'charles' : '12345@qq.com', 'frank' : '23456@qq.com', 'chris' : '34567@qq.com'}

我有两个变量

ld_names = names, phonenumbers, emails
files = ('name_file.txt', 'phonenumber_file.txt', 'emails.txt')

我想得到这样的结果

name_file.txt
['charles', 'frank', 'chris']
phonenumber_file.txt
{'charles': '12345', 'frank': '23456', 'chris': '34567'}
emails.txt
{'charles': '12345@qq.com', 'frank': '23456@qq.com', 'chris': '34567@qq.com'}

如您所见,我有 3 个 txt 文件。如果我一个一个地写它们太冗长了。 我尝试使用 for 循环

for file in files:
    for ld_name in ld_names:
        print(ld_name)
    print(file

这是我尝试写入文件的代码。

    while True:
        mes = input('please press your key:')
        if mes == 'quit':
            for file in files:
                with open(file, 'ab') as f:
                    for ld_name in ld_names:
                    pickle.dump(ld_name, f) 
                    f.close()
            break

但结果不是我想要得到的

【问题讨论】:

  • 你能解释一下吗?我不知道你想做什么!你想让他们写入一个 txt 文件吗?
  • 是的,我正在尝试编写一个联系人程序,我需要将列表和字典的数据写入文件。如您所见,我有 3 个文件,如果我尝试一个一个地编写它们会很冗长

标签: python-3.x loops for-loop


【解决方案1】:

要转储 json,您应该使用 json 而不是 pickle。如果您确定ld_namesfiles 的索引匹配,那么您可以将enumerate 与文件一起使用。否则,我建议使用dict 的文件(即{file: data, ...})。试试这个示例代码;

import json

if __name__ == '__main__':
    names = ['charles', 'frank', 'chris']
    phonenumbers = {'charles': '12345', 'frank': '23456', 'chris': '34567'}
    emails = {'charles': '12345@qq.com', 'frank': '23456@qq.com', 'chris': '34567@qq.com'}

    ld_names = names, phonenumbers, emails
    files = ('name_file.txt', 'phonenumber_file.txt', 'emails.txt')

    for i, file in enumerate(files):
        with open(file, 'ab') as f:
            json.dump(ld_names[i], f)
            f.close()
            pass
        pass

【讨论】:

  • 哈,我很抱歉迟到接受你的回答,因为我不知道而且我没有足够的声誉来投票:(对此我很抱歉..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2020-10-18
  • 2021-10-15
  • 1970-01-01
相关资源
最近更新 更多