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

2024-05-19 14:43:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这段代码可以工作,但我需要知道如何将上面创建的列表中的信息传递到文件中,如图所示交换率.txt". 我该怎么做?你知道吗

输入和输出示例:

输入货币1:日元

输入货币2:美元

输入金额:3你知道吗

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

这是在我的代码中发生的,这是预期的。但是它不会写入文件,文件中的信息也不会更改,这是我的问题。你知道吗


Tags: and文件代码intxt信息forline
2条回答

您可以使用更简单的方法:

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()

一种特别简单的方法是使用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}}。如果需要的话,让它添加/检查并更新反向汇率是相当简单的。你知道吗

相关问题 更多 >