繁体   English   中英

如何将列表的内容传递到现有文件中?

[英]How do I pass the contents of an list into an existing file?

exchangerates = []
newrate = float(input("Enter amount:"))
with open("ExchangeRates.txt","r") as readfile:
    for line in readfile:
        exchangerates.append(line.strip().split(","))
        for line in exchangerates:
            if line[0] == currency1 and line[1] == currency2:
                line[2] = newrate
                print("The exchange rate for",currency1,"and",currency2,"has been changed to",newrate)
        next
        return 0

该代码有效,但是我需要知道如何将上面创建的列表中的信息传递到文件中,显示为“ Exchangerates.txt”。 我该怎么做?

样本输入和输出:

输入货币1:日元

输入货币2:美元

输入数量:3

日元和美元的汇率已更改为3.0

这就是我的代码中发生的情况,这是预期的。 但是,它不会写入文件,并且文件中的信息也不会更改,这是我的问题。

一种特别简单的方法是使用Pickle ,我认为您正在尝试执行以下操作:

import pickle
try:
    with open("ExchangeRates.txt", "rb") as readfile:
        exchangerates = pickle.load(readfile)
except FileNotFoundError:
    exchangerates = {}

currency1 = input("Enter currency 1: ")
currency2 = input("Enter currency 2: ")
newrate = input("Enter exchange rate: ")

if currency1 in exchangerates:
    if currency2 not in exchangerates[currency1] or exchangerates[currency1][currency2] != newrate:
        exchangerates[currency1][currency2] = newrate
        print("The exchange rate for",currency1,"and",currency2,"has been changed to",newrate)
else:
    exchangerates[currency1] = {currency2: newrate}
    print("The exchange rate for",currency1,"and",currency2,"has been changed to",newrate)

with open("ExchangeRates.txt", "wb") as writefile:
    pickle.dump(exchangerates, writefile)

请注意,这会将汇率存储为字典,例如: {'USD': {'GBP': 1.6, 'YEN': 3}} 如果需要的话,让它添加/检查并更新逆汇率也很简单。

您可以使用更简单的方法来做到这一点:

f = open("ExchangeRates.txt","r")
exchangerates = f.read()
f.close()


lines = exchangerates.split("\n")

# do the stuff you want to the list with the loops in list of lines

exchangerates = "\n".join(lines)

f = open("ExchangeRates.txt","w")
f.write(exchangerates)
f.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM