将输出打印到文件

时间:2019-06-18 13:39:05

标签: python

我有一个字典,如下所示。我希望将输出定向到文件“ insert.sql”。我正在尝试在此处打印结果集。我需要帮助将此输出发送到文件。到目前为止,这是我编写的代码。我在这里想念什么。

预期输出:

insert into abc values (
'india',
'china'
);

观察到的输出:

insert into abc values (
'china'
);

代码:

newdict = {'asia': 'india',
           'asia': 'china'}

print("insert into abc values (")
for i, (k, v) in enumerate(newdict.items()):
    if i:
        print(",")
    print("'" + v + "'", end="")
print("\n);")

3 个答案:

答案 0 :(得分:1)

尝试:

with open('insert.sql', 'w') as output:
    print("insert into abc values (", file=output)
    for i, (k, v) in enumerate(newdict.items()):
        if i:
            print(", ", file=output)
        print("'" + v + "'", end="", file=output)
    print("\n);", file=output)

print的{​​{1}}参数允许您传递文件,将打印输出而不是默认标准输出写入文件。

编辑:由于仅使用值,因此可以使用较短的版本:

file

答案 1 :(得分:1)

您的问题是您正在创建字典并在其中复制密钥,从而有效地创建了一个以最后一个值作为密钥值的字典,

>>> {'a': 10, 'a': 20}
{'a': 20}

(就像这样做:

>>> data = {'a': 10}
>>> data['a'] = 20
>>> data
{'a': 20}

就您而言,我认为您需要为每个键使用一个值列表,即

>>> data = {'asia': ['india', 'china']}
>>> for continent, countries in data.items():
...     for country in countries:
...         print(continent, country)
... 
asia india
asia china

顺便说一句,不需要使用enumerate并检查ther是否是索引,因为如果没有元素,for循环将终止

答案 2 :(得分:1)

您在字典中使用的是相同的键,因此“印度”被“中国”代替。尝试将其放入列表中。

newdict = {'asia': ['india', 'china']}

print("insert into abc values (")
for i, (k, v) in enumerate(newdict.items()):    
    for j, country in enumerate(v):
        print("'" + country + "'", end="")
        if j!=(len(v)-1):
            print(",")
print("\n);")