如何将命令行参数传入Python请求的URL字符串中?
解决方案
很简单,我来给你一步步说清楚怎么实现,还给你准备了两种方案,推荐更安全的那种哦~
方法一:使用requests的params参数(强烈推荐)
这种方式不用手动拼接URL,requests会自动帮你处理参数编码和格式,避免因为参数里有特殊字符(比如空格、&这类)导致请求出错,非常省心。
完整代码如下:
import sys import requests try: tag = sys.argv[1] daysback = sys.argv[2] except IndexError: raise IndexError('Usage: python script.py [tag] [daysback]') # 定义基础URL和参数字典 base_url = 'http://somepage/reporting' params = { 'tags': tag, 'daysback': daysback } # 发送请求 resp = requests.get(base_url, params=params) # 如果需要把下载的报告保存到本地,加上这一步就行 with open('report_result.txt', 'wb') as f: f.write(resp.content)
方法二:手动拼接URL(符合你原本的代码逻辑)
如果你就想按照最开始的思路手动拼URL,也可以这么写,但要注意参数里别出现特殊字符,不然可能会报错:
import sys import requests try: tag = sys.argv[1] daysback = sys.argv[2] except IndexError: raise IndexError('Usage: python script.py [tag] [daysback]') # 用f-string拼接URL dls = f'http://somepage/reporting?tags={tag}&daysback={daysback}' resp = requests.get(dls) # 保存报告(可选) with open('report_result.txt', 'wb') as f: f.write(resp.content)
执行方式
打开命令行,进入脚本所在的文件夹,直接输入:
python script.py produce 10
(注意:命令里不用加方括号[],那只是示例的占位符哦)
内容的提问来源于stack exchange,提问作者Hana
相关产品推荐
相关产品推荐

