是否可以使用 python 在外部可执行文件的输出中搜索特定内容?

Is it possible to search for something specific in the output of an outside executable file using python?

我正在编写一个使用外部可执行文件的代码,我正在尝试查看是否有一种方法可以在输出中搜索仅与我提供的特定日期相对应的信息。可执行文件是 tsk_gettimes,我需要扫描用户提供的文件的所有信息,用户只需输入他们想要搜索的日期,代码只会打印出该信息而不是该文件的所有信息。

import os, sys, re

#user file input
filename = input()

if(filename = NULL)
 print(os.system('"C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe"'))


#user date input
keydate = input()

#executable file
os.chdir('C:\Program Files\sleuthkit-4.11.1-win32\bin')
os.system('"C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe %s"', filename).read()

#search for key date
for in
re.search()

#date specifier

如果有帮助的话,这是我目前拥有的代码。

你可以尝试这样的事情......我不太相信它会起作用,但不知道你的可执行文件做了什么。

import subprocess
import os

filename, keydate = input().split(' ')

print(filename)
assert os.path.exists(filename)  #  can't find filename
assert os.path.exists("C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe") # can't find executable

prog = subprocess.run([
    "C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe", 
    filename
    ], stdout=subrocess.PIPE)

output = prog.stdout.decode().split('\n')

for i in output:
    if keydate in i:
        print(i)

如果您遇到编码错误,只需将 latin-1 作为 decode.
的参数 output = prog.stdout.decode('latin-1').split('\n')


或者,如果您希望继续使用 os.system

,请尝试此操作
import os, sys, re
# user file input

# user date input
keydate = input()

filename = input()
temp = "temp"
with open(temp,'wt') as tempfile:
    pass

temp = f'"{os.path.abspath(temp)}"'

filename = f'{filename}'

#executable file
os.system(f'"C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe" {filename} >> {temp_location}')
with open(temp_location,'rt') as temp:
    data = temp.read()

os.remove(temp_location)

#search for key date
for i in data.split('\n'):
    if keydate in i:
        print(i)

使用subprocess.popen()到运行一个命令并读取它的输出。

import subprocess

with subprocess.Popen(['C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe', filename], stdout=PIPE) as proc:
    output = proc.stdout.read()

if re.search(regexp, output):
    ...