Python协助

Python协助,python,Python,我需要从名为files.txt的文件中提取扩展名为.exe的文件名,下面的grep命令在终端窗口中运行良好,但对于我正在进行的练习,我需要使用python脚本完成它 我已经读了一些书,我不能完全理解它,我想我是在要求有人给我答案,但是如果你也能解释一下剧本的过程,这将是一个巨大的帮助,在我得到我的头左右这一点 文件中的示例行- 10.10.10.10 - - [25/Apr/2013:14:11:14 -0700] "GET /include/somefile.exe HTTP/1.1

我需要从名为files.txt的文件中提取扩展名为.exe的文件名,下面的grep命令在终端窗口中运行良好,但对于我正在进行的练习,我需要使用python脚本完成它

我已经读了一些书,我不能完全理解它,我想我是在要求有人给我答案,但是如果你也能解释一下剧本的过程,这将是一个巨大的帮助,在我得到我的头左右这一点

文件中的示例行-

10.10.10.10 - - [25/Apr/2013:14:11:14 -0700] "GET /include/somefile.exe HTTP/1.1" 200 25139 "somewebsite.com" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31" "www.somewebsite.com"
工作Grep命令:

grep ".exe" files.txt | awk -F "/include/" '{print $2}' | cut -d "H" -f 1 | sort -u

我需要的最终输出只是一个文件名列表,即myfile.exe、myfile2.exe

我认为这可以工作:

import re

x = '10.10.10.10 - - [25/Apr/2013:14:11:14 -0700] "GET /include/somefile.exe HTTP/1.1" 200 25139 "somewebsite.com" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31" "www.somewebsite.com"'
x = re.sub(r".*?/include/(.*?)\s.*", r"\1", x)
print(x)
#somefile.exe
这就是你需要的

重新导入
#打开和读取文件
文本=“”
将open(“files.txt”,“r”)作为f:
text=f.read()
name=re.findall(r'/(\w+\.exe)”,文本)
打印(姓名)
或者你可以按照下面的方法做

重新导入
#打开和读取文件
文本=“”
将open(“files.txt”,“r”)作为f:
text=f.read()
名称=[]
分隔符=“/”
#在“.exe”子字符串的所有子字符串中进行迭代
对于re.finditer('.exe',文本)中的m:
a=m.开始()
c=文本[a]
i=a
#查找上一个“/”字符的位置
而(c!=分隔符):
i-=1
c=文本[i]
#将包含.exe文件名的子字符串添加到列表
#i是“/”字符的索引
#是“.exe”子字符串的索引
name.append(文本[i+1:a+4])
打印(姓名)
输入用

10.10.10.10 - - [25/Apr/2013:14:11:14 -0700] "GET /include/somefile.exe"]
10.10.10.10 - - [25/Apr/2013:14:11:14 -0700] "GET /include/somefileother.exe"]
它将显示输出

['somefile.exe', 'somefileother.exe']

取决于要与文件名匹配的规则。如果它前面有正斜杠字符,并且始终具有.exe扩展名,则:

input = '10.10.10.10 - - [25/Apr/2013:14:11:14 -0700] "GET /include/somefile.exe HTTP/1.1" 200 25139 "somewebsite.com" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31" "www.somewebsite.com"'

import re

matchObj = re.search(r'/(\w+\.exe)', input)
if matchObj:
    print(matchObj.group(1))
与任何文件名(前面没有正斜杠)匹配但扩展名为三个字符的更通用的规则可能是:

matchObj = re.search(r'(\w+\.\w{3})', input)
if matchObj:
    print(matchObj.groups())

上述内容仅与
somefile.exe
匹配,而与网站URL不匹配,因为URL在
.com末尾有一个双引号“
,由于双引号,它与上述规则不匹配。

欢迎使用Stackoverflow!请使用所需的行为、特定问题和代码更新您的问题。请看:到目前为止,您获得了哪些Python代码?这只能检测一个.exe文件。