返回
Python3命令行下载器 - 九、添加参数,避免手动修改脚本代码
后端
2023-12-27 23:24:45
在前面几篇文章中,我们已经实现了一个简单的命令行文件下载器。但是,如果我们想修改下载的URL或文件保存的路径,则需要手动修改脚本代码。这对于一个程序来说并不是很友好。因此,在本文中,我们将介绍如何为我们的程序添加启动参数,以避免手动修改脚本代码。
首先,我们需要导入sys
和getopt
模块。sys
模块提供了对命令行参数的访问,而getopt
模块提供了解析命令行参数的函数。
接下来,我们需要定义一个函数来解析命令行参数。这个函数将接受一个参数列表作为输入,并返回一个元组,其中包含解析后的命令行参数。
def parse_args(argv):
try:
opts, args = getopt.getopt(argv, "hu:f:", ["help", "url=", "file="])
except getopt.GetoptError:
print("Usage: python3 download.py -u <url> -f <file>")
sys.exit(2)
url = None
file = None
for opt, arg in opts:
if opt in ("-h", "--help"):
print("Usage: python3 download.py -u <url> -f <file>")
sys.exit()
elif opt in ("-u", "--url"):
url = arg
elif opt in ("-f", "--file"):
file = arg
if url is None or file is None:
print("Usage: python3 download.py -u <url> -f <file>")
sys.exit(2)
return url, file
在上面的代码中,我们首先使用getopt.getopt()
函数来解析命令行参数。如果解析失败,则打印帮助信息并退出程序。然后,我们定义了两个变量url
和file
来存储命令行参数的值。接下来,我们遍历解析后的参数列表,并将参数值存储到相应的变量中。最后,我们检查url
和file
是否都已设置,如果没有,则打印帮助信息并退出程序。
现在,我们可以使用解析后的命令行参数来下载文件。
def main():
url, file = parse_args(sys.argv[1:])
# 下载文件
download_file(url, file)
if __name__ == "__main__":
main()
在上面的代码中,我们首先调用parse_args()
函数来解析命令行参数。然后,我们使用解析后的参数来下载文件。
现在,我们可以使用启动参数来运行我们的程序。例如,我们可以使用以下命令来下载一个文件:
python3 download.py -u https://example.com/file.zip -f /tmp/file.zip
上面的命令将下载URL为https://example.com/file.zip
的文件并将其保存到路径/tmp/file.zip
。
添加命令行参数后,我们的程序就更加易于使用了。我们无需再手动修改脚本代码,就可以轻松地下载文件。