由于想写根据端口号查看端口,想着1对1的对应关系,输入端口号,返回端口信息。
网上没有找到端口号对应端口信息的csv文件,只找到了txt文件。
如下:
这里可以通过直接对txt文件进行操作,将文本每行输入到字符串中,再匹配需要查找的端口号的长度,进行字符匹配,输出结果。
# -*- coding: utf-8 -*-
chioce = "1"
while chioce == "1":
port = input("需要查找的端口:")
len_port = len(port)
filename = "port.txt"
f = list(open(filename,encoding="utf-8"))
for s in f:
if s[:len_port] == port:
print(s)
chioce =input("是否继续,是输入1:")
运行结果:匹配所有以用户输入字符串开头的内容,直接输出匹配到的内容。
要进行1对1的匹配,那么用数据处理的方式,我以为会很简单。
首先进行创建,读取文件,转为csv文件。
# -*- coding: utf-8 -*-
import csv
fh = open(r"port.csv","w+",newline="",encoding="utf-8")
writer = csv.writer(fh)
writer.writerow(["端口号","端口提供服务"])
dt = open(r"port.txt",encoding="utf-8")
res = []
for i in dt:
d = [x for x in i.strip().split(":")]
res.append(d)
print(res)
writer.writerows(res)
dt.close()
fh.close()
然后再根据内容匹配进行查找:
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 18 08:47:04 2020
@author: xu
"""
import csv
chioce = "1"
while chioce == "1":
port = input("需要查找的端口:")
filename = "port.csv"
with open(filename,encoding="utf-8") as f:
reader = csv.reader(f)
header_row = next(reader)#读取第一行,第一行是行的属性。
for i in enumerate(header_row):
for row in reader:
if row[0] == port:
print(row[1])
chioce = input("是否继续,继续输入1:")
运行结果:
这样有点傻瓜,也可以用字符匹配的方法。让其可以匹配到多个字符。
if row[0][:len(port)] == port:
print(row[0]+":"+row[1])
结果如下:
因篇幅问题不能全部显示,请点此查看更多更全内容