python添加命令行参数和异常处理

异常处理+命令行解析库argparse

Socket.error 与一般I/O和通信问题有关的

Socket.gaierror 与查询地址有关的

Socket.herror 与其他地址错误有关

Socket.timeout 与一个socket上调用settimeout()后,超时处理有关

#-*- coding:utf-8 -*-
import sys
import socket
import argparse
#通过命令行输入参数 python 1_7_socket_errors.py --host=www.python.org --port=8080 --file=1_7_socket_errors.py
#也可直接指定host和port,运行。
def main():
    #创建一个解析器
    parser = argparse.ArgumentParser(description = "Socket Error")
    #添加参数选项
    parser.add_argument('--host',action="store",dest="host",required=False)
    parser.add_argument('--port',action="store",dest="port",required=False,type=int)
    parser.add_argument('--file',action="store",dest="file",required=False)
    #调用parse_args()方法进行解析
    given_args = parser.parse_args()
    host = given_args.host
    port = given_args.port
    #也可以自己指定port,host
    #host = "www.python.org"
    #port = 80

    filename = given_args.file
    #处理创建套接字异常
    try:
        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    except socket.error,e:
        print "Error creating socket:%s"%e
        sys.exit(1)
    #处理连接套接字异常
    try:
        s.connect((host,port))
    except socket.gaierror,e:
        print"Address-related error connecting to server:%s"%e
        sys.exit(1)
    except socket.error,e:
        print"Connection error:%s"%e
        sys.exit()

    #处理发送数据错误
    try:
        #GET方法 发送到网网站
        s.sendall("GET %s HTTP/1.0\r\n\r\n"%filename)
    except socket.error,e:
        print"Error sending data:%s"%e
        sys.exit(1)

    while 1:
        try:
            #接受网站给返回的数据
            buf = s.recv(2048)
        except socket.error,e:
            print"Error receiving data:%s"%e
            sys.exit(1)
        if not len(buf):
            break
        #将buf数据发送到命令行中
        sys.stdout.write(buf)

if __name__ == "__main__":
    main()
时间: 2024-10-26 17:15:27

python添加命令行参数和异常处理的相关文章

给go程序添加命令行参数

操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 需要应用程序根据不同的配置文件访问不同的服务器,希望程序启动时可以指定配置文件. 解决方案 package main import ( "os" "fmt" ) func main() { argsWithProg := os.Args if(len(argsWithProg) < 2) { fmt.Println("usage : ",argsWithProg

Python 的命令行参数处理 optparse-&gt;argparse

optaprse自2.7版开始弃用:弃用optparse模块,不会进一步开发,将继续开发argparse模块作为替代. 但是用习惯了optparse,还是很好用的撒. optparse使用起来,相比旧的getopt模块,更方便.灵活而且解析命令行选项的库功能强大. optparse使用声明样式的命令行解析:你创建一个OptionParser实例,填充选项,并解析命令行. optparse允许用户使用在传统GNU / POSIX语法的选项,而且会生成的使用和帮助信息(就是你没有显式的定义-h/--

Python 中命令行参数解析工具 docopt 安装和应用

什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制.这样脚本在执行的时候就必须按照这样格式来执行,同时,也可以很方便的编写一些帮助信息(其实很多软件在输入 -h 的时候显示信息 .例如 python -h ,会显示所有的 python 指令,并且页通过 docopt 限制了 python 指令的格式),下面是一些简单的例子: docopt 的安装 d

Python 获得命令行参数的方法

本篇将介绍python中sys, getopt模块处理命令行参数 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?需要模块:sys参数个数:len(sys.argv)脚本名: sys.argv[0]参数1: sys.argv[1]参数2: sys.argv[2] test.py 1 import sys 2 print "脚本名:", sys.argv[0] 3 for i in range(1, len(sys.argv)):

awk,perl,python的命令行参数处理

Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性化到家了,但是命令行上就很原始,但是很有分类感.还是会喜欢Perl一点(至少还可以动脑子,不至于生锈),感觉Perl是个杂合子,而python像胡彦斌,bash像韩红(最近看我是歌手第三季,嘻嘻).Bash就是家常菜了,虽然Perl可以大部分代替Bash的功能,像grep sort map等,但是某

Python处理命令行参数

1. 将命令行参数保存在列表中,注意argv[0]是程序本身的名字: import sys print(sys.argv) print(sys.argv[1]) python argv.py localhost 3306['argv.py', 'localhost', '3306']localhost 2. 使用sys.stdin和fileinput读取标准输入,并打印在终端类似shell中的管道 import sys for line in sys.stdin: print(line,end=

python中命令行参数

python中的命令行参数 python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 len(sys.argv)是命令行参数的个数 下面我们用一个简单的例子来说明一下. #!/usr/bin/python #coding:utf-8 import sys ##加载sys这个模块. for i in range(len(sys.argv)): print "第%d个参数是:%s"

在VS中添加命令行参数argv[]

英文版: 菜单Project -> Properties -> Configuration Properties -> Debugging 在Command Arguments里填上即可. 中文版: 菜单[项目] -> 属性页 -> 配置属性 -> 调试 在[命令行参数]里填上即可. 记得不同参数之前用空格隔开. argc不用自己设置.argc指的就是argv中的元素数

python的命令行参数处理

import argparse # A position argument func_choice = {'client' : 'client function', "server" : "server function"} # parser parser = argparse.ArgumentParser(description = "Select your favorite function") # add argument parser.a