Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-拆分src IP、src Port、dest IP、dest Port并创建字典_Python_File_Text_Dictionary_Split - Fatal编程技术网

Python-拆分src IP、src Port、dest IP、dest Port并创建字典

Python-拆分src IP、src Port、dest IP、dest Port并创建字典,python,file,text,dictionary,split,Python,File,Text,Dictionary,Split,因此,我打开了我的文件,并使用readlines模块将每一行拆分为一个列表,但我试图从readlines中取出每个源IP、src端口、dest IP和dest端口。基本上,我被要求做的是:打开提供的转储文件,为src和dest ip以及src和dest端口拆分每一行。此外,创建一个名为Hosts的字典;主机的密钥将是从文件src和dest解析的IP。每个键的值将是一个两元素列表,其中第一项是IP作为源的次数,第二项是IP作为目标的次数 这是已解析文件的一部分 08:43:56.558781 IP

因此,我打开了我的文件,并使用readlines模块将每一行拆分为一个列表,但我试图从readlines中取出每个源IP、src端口、dest IP和dest端口。基本上,我被要求做的是:打开提供的转储文件,为src和dest ip以及src和dest端口拆分每一行。此外,创建一个名为Hosts的字典;主机的密钥将是从文件src和dest解析的IP。每个键的值将是一个两元素列表,其中第一项是IP作为源的次数,第二项是IP作为目标的次数

这是已解析文件的一部分

08:43:56.558781 IP 192.168.233.128.56779 > 50.116.53.73.80: Flags [S], seq 3055452145, win    29200, options [mss 1460,sackOK,TS val 82505 ecr 0,nop,wscale 10], length 0
08:43:56.592590 IP 50.116.53.73.80 > 192.168.233.128.56779: Flags [S.], seq 1586785220, ack 3055452146, win 64240, options [mss 1460], length 0
08:43:56.592688 IP 192.168.233.128.56779 > 50.116.53.73.80: Flags [.], ack 1, win 29200, length 0
08:43:56.700460 IP 192.168.233.128.56779 > 50.116.53.73.80: Flags [P.], seq 1:300, ack 1, win 29200, length 299
08:43:56.701082 IP 50.116.53.73.80 > 192.168.233.128.56779: Flags [.], ack 300, win 64240, length 0
08:43:57.034951 IP 50.116.53.73.80 > 192.168.233.128.56779: Flags [P.], seq 1:1395, ack 300, win 64240, length 1394
08:43:57.034976 IP 192.168.233.128.56779 > 50.116.53.73.80: Flags [.], ack 1395, win 32062, length 0
08:43:57.118796 IP 192.168.233.128.56780 > 50.116.53.73.80: Flags [S], seq 3778524509, win 29200, options [mss 1460,sackOK,TS val 82645 ecr 0,nop,wscale 10], length 0
仅供参考,该文件的格式如下:

IP源.Sourceport>dest.Destport

以下是我到目前为止的情况:

import os

while True:
try:
    f = open(os.path.expanduser("~/Documents/Pys/ascii_dump.txt"))
    print ("It Opened!")
    break
except:
    print ("Cannot Open!")
    break

lines = f.readlines()
更新
现在,我正在寻找最好的方法,将str在一个字符上的一行拆分为另一个字符。因此,假设在a:到下一个:。拆分它。

我认为您需要查看字符串的拆分方法

f = open('data.txt', 'r')
lines = f.read()
lines = lines.split("\n")
print(lines)
for line in lines:
    line = line.split()
    if len(line) > 0:
        srcIp = line[2]
        dstIp = line[4]
        print(srcIp.split('.'),dstIp.split('.'))
给出:

['192', '168', '233', '128', '56779'] ['50', '116', '53', '73', '80:']
['50', '116', '53', '73', '80'] ['192', '168', '233', '128', '56779:']
['192', '168', '233', '128', '56779'] ['50', '116', '53', '73', '80:']
['192', '168', '233', '128', '56779'] ['50', '116', '53', '73', '80:']
['50', '116', '53', '73', '80'] ['192', '168', '233', '128', '56779:']
['50', '116', '53', '73', '80'] ['192', '168', '233', '128', '56779:']
['192', '168', '233', '128', '56779'] ['50', '116', '53', '73', '80:']
['192', '168', '233', '128', '56780'] ['50', '116', '53', '73', '80:']

好的,那么试着添加一些代码来解析这些行。或者雇佣一个开发人员。好吧,最后一行对你没有任何好处;readlines不会拆分每一行,它只是将所有这些行按原样复制到一个列表中,这并不比您已经拥有该文件的iterable好多少。同时,您还没有编写任何迭代行、拆分每行或解析已拆分部分的尝试。因此,您只是要求我们为您完成作业;您只需使用一两个标准,就可以完成所有的拆分和解析。或者您可以使用正则表达式使其更紧凑,但如果您不知道它是什么,请不要担心。如果你尝试了任何一种方法,但被卡住了,那么你将有一个好问题要问。非常感谢约翰!我会考虑的!问题是我真的不知道该去哪里。我知道我可以用for循环遍历文件,但它只是在IP上分裂。所以,也许我可以在任何包机号码上拆分,从IP的开始到IP的结束,并对端口执行相同的操作。如果这有意义的话。@user3002598,我的答案有问题吗?没有,你的答案是好的。我只是有一段时间没去看斯塔克了。问题解决了,一切都很好。谢谢