python脚本怎么修改成读取文件???

guxuanyake 2018-09-11 02:40:17
python怎么修改成读取文件???
想用python脚本做一个检查ip 端口连接是否通不通的,但发现机器很多,用读取文件的方式会比较好,但没写出来怎么来写?

代码如下:

import socket
import codecs
import threading
import time
def testconn( host , port ):
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(1)
try:
sk.connect((host,port))
return host+" Server is "+str(port)+" connect"
except Exception:
return host+" Server is "+str(port)+" not connect!"
sk.close()
class Test(threading.Thread):
def __init__(self):
pass
def test(self):
print testconn('172.31.32.3',22)
print testconn('10.87.30.101',22)
def run(self):
#while True:
#print time.strftime('%Y-%m-%d %H:%M:%S')
self.test()
time.sleep(1)
a=Test()
a.run()



怎么修改成让读取列表 ?列表文件为ip.list
ip.list内容:
amachine 172.31.32.3,22
bmachine 10.87.30.101,22

要的结果打印是 :
amachine 172.31.32.3 Server is 22 connect!
bmachine 10.87.30.101 Server is 22 connect!
...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
notback 2018-09-14
  • 打赏
  • 举报
回复
用with open 打开文件,for line in f: 遍历文件
用切片和split 获取数据
看你写的test类,估计想开线程来检查。
你的testconn函数需要改动,增加输出,不能直接return,可以考虑全局变量,传入queue或者直接往文件里面写数据解决数据输出。
这种简单的线程不需要写class,直接用thread.Thread 将函数传入即可。
百一不只 2018-09-13
  • 打赏
  • 举报
回复
大概的写法:
#提取列表中的IP地址和端口号(假定数据放在ip.txt文本中)
for line in open('ip.txt'):
line1 = line.split(' ')[1]
name = line.split(' ')[0]
host = line1.split(',')[0]
port = line1.split(',')[1]
try:
sk.connect((host,port))
return name+host+" Server is "+str(port)+" connect"
except Exception:
return name+host+" Server is "+str(port)+" not connect!"
sk.close()

huahauge 2018-09-11
  • 打赏
  • 举报
回复
ip = []
with open("filename") as fobject:
for line in fobject:
ip.append(line.strip())

print(ip)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧