运行 下载 link 并解压到 python 中的一个文件夹,其中 url 存储一个变量

run download link and unzip to a folder in python with a url that stores a variable

如何使 python 中的脚本通过用户通过控制台在输入中输入的值在存储库的特定 url 中被替换,以便能够下载一个 .zip,当它被自动下载时,会在输入它的地方创建一个文件夹并解压,例如:

随机给定两个githuburls:

https://github.com/exercism/python/archive/refs/heads/bobahop-patch-1.zip

https://github.com/exercism/python/archive/refs/heads/bobahop-patch-2.zip

用户可以通过控制台输入“patch-1”或“patch-2”,这个值将在 url 中被替换,然后 link 将被执行并且 .它包含的 zip 将被下载到存储库。同时,将创建一个任意名称的文件夹(例如,用户在控制台中输入的值)并将下载的 .zip 文件移动到该文件夹​​,然后解压缩。

Python 有

  • 标准模块urllib到get/download来自网页的数据urllib.request.urlretrieve()
  • 标准模块 os 创建文件夹 os.makedirs() 和 move/rename 文件 os.rename()
  • 标准模块zipfile到compress/uncompress.zip文件
import os
import urllib.request
import zipfile

#user_input = input("What to download: ")
user_input = 'patch-1'

pattern = 'https://github.com/exercism/python/archive/refs/heads/bobahop-{}.zip'
url = pattern.format(user_input)

filename = f"{user_input}.zip"

print('From:', url)
print('  To:', filename)

urllib.request.urlretrieve(url, filename)

# ---

destination_folder = user_input
print('Create folder:', destination_folder)

os.makedirs(destination_folder, exist_ok=True)

# ---

print('Uncompress')

zip_file = zipfile.ZipFile(filename)
zip_file.extractall(destination_folder)

# ---

print("Move .zip to folder")

old_name = filename
new_name = os.path.join(destination_folder, filename)
os.rename(old_name, new_name)