![](/img/trans.png)
[英]How do I list contents of a gz file without extracting it in python?
[英]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.