我有以下代码使用3个字符串'us dollar','euro','02 -11-2014', 以及计算该给定日期的汇率的数字。我修改了 传递这些参数的代码,但是当我尝试使用
调用它时出现错误python currencyManager.py "us dollars" "euro" 100 "02-11-2014"
Traceback (most recent call last):
File "currencyManager.py", line 37. in <module>
currencyManager(currTo,currFrom,currAmount,currDate)
NameError: name 'currTo' is not defined
我对Python很新,所以我的知识有限。任何帮助将不胜感激。谢谢。 我正在使用的Python版本是3.4.2。
import urllib.request
import re
def currencyManager(currTo,currFrom,currAmount,currDate):
try:
currency_to = currTo #'us dollars'
currency_from = currFrom #'euro'
currency_from_amount = currAmount
on_date = currDate # Day-Month-Year
currency_from = currency_from.replace(' ', '+')
currency_to = currency_to.replace(' ', '+')
url = 'http://www.wolframalpha.com/input/?i=' + str(currency_from_amount) + '+' + str(currency_from) + '+to+' + str(currency_to) + '+on+' + str(on_date)
req = urllib.request.Request(url)
output = ''
urllib.request.urlopen(req)
page_fetch = urllib.request.urlopen(req)
output = page_fetch.read().decode('utf-8')
search = '<area shape="rect.*href="\/input\/\?i=(.*?)\+.*?&lk=1'
result = re.findall(r'' + search, output, re.S)
if len(result) > 0:
amount = float(result[0])
print(str(amount))
else:
print('No match found')
except URLError as e:
print(e)
currencyManager(currTo,currFrom,currAmount,currDate)
答案 0 :(得分:4)
命令行
python currencyManager.py "us dollars" "euro" 100 "02-11-2014"
不会自动将“us dollar”“euro”100“02-11-2014”分配给currTo,currFrom,currAmount,currDate。 相反,命令行参数存储在列表sys.argv中。 您需要解析sys.argv和/或将其值传递给对currencyManager的调用:
例如,更改
currencyManager(currTo,currFrom,currAmount,currDate)
到
import sys
currencyManager(*sys.argv[1:5])
sys.argv
中的第一个元素是脚本名称。因此sys.argv[1:5]
由脚本名称后面的后4个参数组成(假设在命令行中输入了4个参数。)您可能希望检查在命令行上传递了正确数量的参数,并且它们是正确的类型。 The argparse
module可以为您提供帮助。
*
unpacks the list *sys.argv[1:5]
中的sys.argv[1:5]
,并将列表中的项目作为参数传递给函数currencyManager
。