检查CMD中的参数是否已编写或未使用Python
我是python新手,我正在尝试构建一个脚本,该脚本获取一个URL作为参数,并向网站发送一个GET请求,然后打印响应和HTML正文中的详细信息 我写的代码是:检查CMD中的参数是否已编写或未使用Python,python,Python,我是python新手,我正在尝试构建一个脚本,该脚本获取一个URL作为参数,并向网站发送一个GET请求,然后打印响应和HTML正文中的详细信息 我写的代码是: import sys import urllib.request url = 'https://%s' % (sys.argv[1]) res = urllib.request.urlopen(url) print('Response from the server:'+'\n', res.info()) print('HTML web
import sys
import urllib.request
url = 'https://%s' % (sys.argv[1])
res = urllib.request.urlopen(url)
print('Response from the server:'+'\n', res.info())
print('HTML web page:'+'\n', res.read())
现在,我想检查一个参数是否通过CMD传递,如果没有,则发出警告。
以及打印状态代码和原因。
理性到底意味着什么?
这就是我到目前为止得到的,我不明白为什么我没有得到任何结果
我目前的代码是:
import sys
import urllib.request, urllib.error
try:
url = 'https://%s' % (sys.argv[1])
res = urllib.request.urlopen(url)
except IndexError:
if len(sys.argv) < 1:
print(res.getcode())
print(res.getreason())
elif len(sys.argv) > 1:
print('Response from the server:'+'\n', res.info())
print('HTML web page:'+'\n', res.read())
print('Status Code:', res.getcode())
导入系统
导入urllib.request,urllib.error
尝试:
url='https://%s'(sys.argv[1])
res=urllib.request.urlopen(url)
除索引器外:
如果len(sys.argv)<1:
打印(res.getcode())
打印(res.getreason())
elif len(系统参数)>1:
打印('来自服务器的响应:'+'\n',res.info())
打印('HTML网页:'+'\n',res.read())
打印('状态代码:',res.getcode())
谢谢。只有在命令行中不提供任何参数时,才会执行
except
块。基本上只有在引发索引器异常时才会执行。我相信在这种情况下,仅打印错误消息就足够了。打印语句应在try
块内处理
import sys
import urllib
from urllib2 import URLError
try:
url = 'https://%s' % (sys.argv[1])
#url = r'https://www.google.com'
res = urllib.urlopen(url)
print('Response from the server:' + '\n', res.info())
print('HTML web page:' + '\n', res.read())
print('Status Code:', res.getcode())
except IndexError as e:
print e.message
except URLError as e1:
print e1.reason
注意:我使用的是python 2.7。因此,我没有使用urllib.request.urlopen(),因为在Python2.x中这是不必要的,因为您只检查
len(sys.argv)<1或len(sys.argv)>1
,而从不检查len(sys.argv)==1
,因为sys.argv[0]
是脚本的名称
此外,如果使用除IndexError之外的,则实际上是在处理(或应该处理)异常,因此python在退出时不会出现错误,不会在if elif
子句中出现任何大小写
你可以这样做:
import sys
import urllib
try:
url = 'https://%s' % (sys.argv[1])
res = urllib.request.urlopen(url)
except IndexError:
if len(sys.argv) <= 1:
print("Too few arguments")
raise # <- or replace with sys.exit(1) if you don't want to propagate the exception
导入系统
导入URL库
尝试:
url='https://%s'(sys.argv[1])
res=urllib.request.urlopen(url)
除索引器外:
如果len(sys.argv)您正在except块中打印响应。将else语句中的print语句移动到try块中。我尝试对url进行硬编码并进行了测试。作品fine@DineshKumar,你能帮我附上密码吗?我不明白。我如何打印原因?你是指索引错误的原因吗?谢谢。我添加了它。