返回

Python3命令行下载器 - 九、添加参数,避免手动修改脚本代码

后端

在前面几篇文章中,我们已经实现了一个简单的命令行文件下载器。但是,如果我们想修改下载的URL或文件保存的路径,则需要手动修改脚本代码。这对于一个程序来说并不是很友好。因此,在本文中,我们将介绍如何为我们的程序添加启动参数,以避免手动修改脚本代码。

首先,我们需要导入sysgetopt模块。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()函数来解析命令行参数。如果解析失败,则打印帮助信息并退出程序。然后,我们定义了两个变量urlfile来存储命令行参数的值。接下来,我们遍历解析后的参数列表,并将参数值存储到相应的变量中。最后,我们检查urlfile是否都已设置,如果没有,则打印帮助信息并退出程序。

现在,我们可以使用解析后的命令行参数来下载文件。

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

添加命令行参数后,我们的程序就更加易于使用了。我们无需再手动修改脚本代码,就可以轻松地下载文件。