python从命令行获取参数,python执行程序获取终端输出
本文主要介绍一个Python编程获取终端命令行参数的例子。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010实施步骤命令行启动动态绑定端口号代码的实施。
目录
获取终端命令行参数,使用sys.argv实现
1.导入系统模块
导入系统
2.获取命令行参数
params=sys.argv
打印(参数)
打印(params[1])
获取的是字符串类型,可能需要在使用前进行转换。
实现步骤
1.获取执行python程序的终端命令行参数。
sys.argv
2.确定参数的类型,并将端口号设置为整数。
如果不是sys.argv[1]。isdigit():
Print(启动命令如下: python 3 XXX . py 9090 )
返回
port=int(sys.argv[1])
3.将端口号参数添加到Web服务器类的初始化方法中,该参数用于绑定端口号。
def __init__(self,port):
self.tcp_server_socket.bind((" ",port))
命令行启动动态绑定端口号
导入插座
导入线程
导入系统
#定义一个web服务器类
类HttpWebServer(对象):
def __init__(self,port):
#创建tcp服务器套接字
TCP _ server _ socket=socket . socket(socket。AF_INET,socket。袜子_流)
#设置端口号复用,程序出口端口立即释放。
TCP _ server _ socket . setsockopt(socket。SOL_SOCKET,SOCKET。SO_REUSEADDR,True)
#绑定端口号
tcp_server_socket.bind(( ,port))
#设置监听
tcp_server_socket.listen(128)
#保存成功创建的服务器套接字。
self.tcp _服务器_套接字=tcp _服务器_套接字
#处理客户的请求
@静态方法
定义句柄_客户端_请求(新_套接字):
#此处执行代码,表示连接建立成功。
recv _ client _ data=new _ socket . recv(4096)
if len(接收客户数据)==0:
打印(“关闭的浏览器”)
new _套接字. close()
返回
#解码二进制数据
recv _ client _ content=recv _ client _ data . decode(“utf-8”)
打印(接收客户内容)
#根据指定的字符串进行除法运算,最大除法数为2。
request _ list=recv _ client _ content . split( ,maxsplit=2)
#获取请求的资源路径
请求路径=请求列表[1]
打印(请求路径)
#判断请求的根目录是否为根目录,如果满足条件,则指定返回主页数据。
if request_path==/:
request_path=/index.html
尝试:
#动态打开指定的文件
用open(static request_path, rb )作为文件:
#读取文件数据
file_data=file.read()
e:除外
#请求的资源不存在,返回404数据
#响应行
response_line=找不到HTTP/1.1 404 \ r \ n
#响应标题
response _ header= server : pws 1.0 \ r \ n
用open(static/error.html , rb )作为文件:
file_data=file.read()
#响应者
response_body=文件数据
#拼接响应消息
response _ data=(response _ line response _ header \ r \ n )。编码( utf-8 )响应_正文
#发送数据
新套接字发送(响应数据)
else:
#响应行
response _ line= HTTP/1.1 200 OK \ r \ n
#响应标题
response _ header= server : pws 1.0 \ r \ n
#响应者
response_body=文件数据
#拼接响应消息
response _ data=(response _ line response _ header \ r \ n )。编码( utf-8 )响应_正文
#发送数据
新套接字发送(响应数据)
最后:
#关闭服务和客户端之间的套接字
new _套接字. close()
#启动web服务器开始工作
定义开始(自身):
而True:
#等待接受客户端的连接请求。
new_socket,IP _ port=self . TCP _ server _ socket . accept()
#当客户端和服务器建立连接时,创建一个子线程。
sub_thread=线程。线程(target=self . handle _ client _ request,args=(new_socket,))
#设置守护程序主线程
sub_thread.setDaemon(True)
#启动线程执行相应的任务。
sub_thread.start()
#程序输入功能
定义主():
打印(sys.argv)
#判断命令行参数是否等于2,
if len(sys.argv)!=2:
Print(执行命令如下: python3 xxx.py 8000 )
返回
#确定字符串是否都是数字。
如果不是sys.argv[1]。isdigit():
Print(执行命令如下: python3 xxx.py 8000 )
返回
#获取终端命令行参数
port=int(sys.argv[1])
#创建web服务器对象
web_server=HttpWebServer(端口)
#启动web服务器开始工作
web_server.start()
if __name__==__main__:
主()
以上是Python编程获取终端命令行参数的例子细节。关于Python获取终端命令行参数的更多信息,请关注流行的IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。