【发布时间】:2017-03-08 19:21:44
【问题描述】:
我的 python 脚本名为dlimage。我想结合一个 if 语句和一个 for 循环。在终端中,我希望能够输入python dlimage 1 2 3,它只会下载一张图片。否则,如果 num3 的变量为空并且我输入 python dlimage 1 2,它将使用 for 循环 for num3 in range(01,50): 下载 50 张图像。
我运行python dlimage 1 2时的错误:
Traceback (most recent call last):
File "dlimage.py", line 4, in <module>
if not num3:
NameError: name 'num3' is undefined
我如何定义它,因为 num3 已经在下面的解析器和 url 中?我也不完全确定我的代码是正确的。这里有什么问题?
我的代码:
import urllib
import argparse
if not num3:
for num3 in range(01,50):
def download_web_image(url):
IMAGE = url.rsplit('/',1)[1]
urllib.urlretrieve(url, IMAGE)
parser = argparse.ArgumentParser()
parser.add_argument("num1")
parser.add_argument("num2")
parser.add_argument("num3")
args = parser.parse_args()
download_web_image("https://www.example.com/{num1}/{num2}/{num3}.jpg".format(num1=args.num1, num2=args.num2, num3=args.num3))
else:
def download_web_image(url):
IMAGE = url.rsplit('/',1)[1]
urllib.urlretrieve(url, IMAGE)
parser = argparse.ArgumentParser()
parser.add_argument("num1")
parser.add_argument("num2")
parser.add_argument("num3")
args = parser.parse_args()
download_web_image("https://www.example.com/{num1}/{num2}/{num3}.jpg".format(num1=args.num1, num2=args.num2, num3=args.num3))
更新:它现在正在工作。感谢你的帮助。
【问题讨论】:
-
在这个程序中执行的第一行是
if not num3。num3此时未定义。因此错误。我真的不确定您还期待什么。 -
将它的默认值设置为某种东西,也许是
None? -
您的解析器块
parser = argparse.ArgumentParser()直到args = parser.parse_args()必须在调用if not num3:之前,我认为,它必须是if not args.num3之类的东西,而不是num3。不应该吗?
标签: python if-statement for-loop undefined