Python网络编程——获取终端命令行参数

简介: 获取终端命令行参数,通过使用 sys.argv实现

概述

获取终端命令行参数,通过使用 sys.argv实现



实现步骤

1.导入sys模块

importsys


2.获取命令行参数

params=sys.argvprint(params)
print(params[1])

获取到的为字符串类型,可能需要转换类型再使用


命令行启动动态绑定端口号

1.获取执行python程序的终端命令行参数

sys.argv


2.判断参数的类型,设置端口号必须是整型

ifnotsys.argv[1].isdigit():
print("启动命令如下: python3 xxx.py 9090")
returnport=int(sys.argv[1])


3.给Web服务器类的初始化方法添加一个端口号参数,用于绑定端口号

def__init__(self, port):
self.tcp_server_socket.bind((“”, port))


代码实现

importsocketimportthreadingimportsys# 定义web服务器类classHttpWebServer(object):
def__init__(self, port):
# 创建tcp服务端套接字tcp_server_socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置端口号复用, 程序退出端口立即释放tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 绑定端口号tcp_server_socket.bind(("", port))
# 设置监听tcp_server_socket.listen(128)
# 保存创建成功的服务器套接字self.tcp_server_socket=tcp_server_socket# 处理客户端的请求@staticmethoddefhandle_client_request(new_socket):
# 代码执行到此,说明连接建立成功recv_client_data=new_socket.recv(4096)
iflen(recv_client_data) ==0:
print("关闭浏览器了")
new_socket.close()
return# 对二进制数据进行解码recv_client_content=recv_client_data.decode("utf-8")
print(recv_client_content)
# 根据指定字符串进行分割, 最大分割次数指定2request_list=recv_client_content.split(" ", maxsplit=2)
# 获取请求资源路径request_path=request_list[1]
print(request_path)
# 判断请求的是否是根目录,如果条件成立,指定首页数据返回ifrequest_path=="/":
request_path="/index.html"try:
# 动态打开指定文件withopen("static"+request_path, "rb") asfile:
# 读取文件数据file_data=file.read()
exceptExceptionase:
# 请求资源不存在,返回404数据# 响应行response_line="HTTP/1.1 404 Not Found\r\n"# 响应头response_header="Server: PWS1.0\r\n"withopen("static/error.html", "rb") asfile:
file_data=file.read()
# 响应体response_body=file_data# 拼接响应报文response_data= (response_line+response_header+"\r\n").encode("utf-8") +response_body# 发送数据new_socket.send(response_data)
else:
# 响应行response_line="HTTP/1.1 200 OK\r\n"# 响应头response_header="Server: PWS1.0\r\n"# 响应体response_body=file_data# 拼接响应报文response_data= (response_line+response_header+"\r\n").encode("utf-8") +response_body# 发送数据new_socket.send(response_data)
finally:
# 关闭服务与客户端的套接字new_socket.close()
# 启动web服务器进行工作defstart(self):
whileTrue:
# 等待接受客户端的连接请求new_socket, ip_port=self.tcp_server_socket.accept()
# 当客户端和服务器建立连接程,创建子线程sub_thread=threading.Thread(target=self.handle_client_request, args=(new_socket,))
# 设置守护主线程sub_thread.setDaemon(True)
# 启动子线程执行对应的任务sub_thread.start()
# 程序入口函数defmain():
print(sys.argv)
# 判断命令行参数是否等于2,iflen(sys.argv) !=2:
print("执行命令如下: python3 xxx.py 8000")
return# 判断字符串是否都是数字组成ifnotsys.argv[1].isdigit():
print("执行命令如下: python3 xxx.py 8000")
return# 获取终端命令行参数port=int(sys.argv[1])
# 创建web服务器对象web_server=HttpWebServer(port)
# 启动web服务器进行工作web_server.start()
if__name__=='__main__':
main()
目录
相关文章
|
3月前
|
机器学习/深度学习 算法
PSO和GA优化BP神经网络参数
PSO和GA优化BP神经网络参数
86 5
|
9天前
|
存储 弹性计算 网络协议
阿里云服务器ECS实例规格族是什么?不同规格CPU型号、处理器主频及网络性能参数均不同
阿里云ECS实例规格族是指具有不同性能特点和适用场景的实例类型集合。不同规格族如计算型c9i、通用算力型u1、经济型e等,在CPU型号、主频、网络性能、云盘IOPS等方面存在差异。即使CPU和内存配置相同,性能参数和价格也各不相同,适用于不同业务需求。
|
2月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
239 51
|
2月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
2月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
62 4
|
8月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
458 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
4月前
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
100 15
|
3月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
118 9
|
5月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
663 31
|
5月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
132 7

热门文章

最新文章

推荐镜像

更多