如何在 python 中为文件夹中的每个文件执行 tshark

How to execute tshark in python for every file in a folder

我有大约 100 个 .pcap 个文件需要分析。我想为此使用 tshark。我的想法是使用 python 脚本来自动执行此任务。它必须 运行 对我文件夹中的每个 .pcap 文件执行以下命令:

tshark -r filename1.pcap -q -z io,stat,1 >> outfile1.txt

所以对于每个 filename.pcap 我想要一个 outfile.txt.

这是我的方法:

import os
inputdir = "C:/testfolder"
command = "tshark -r *.pcap -q -z io,stat,1 >> outfile.txt"
for pcapFilename in os.listdir(inputdir):
       if not pcapFilename.endswith(".pcap"):
          continue
       os.system(command)

我知道这行不通。但此刻我有点卡住了。

如果您唯一需要的是 运行 外部命令,为什么要使用 Python?这作为 shell 脚本或批处理脚本更有意义。 (我会告诉你 Windows 批处理脚本很糟糕。)

import os
import subprocess

inputdir = "C:/testfolder"
with open("outfile.txt","w") as outfile:
    for pcapFilename in os.listdir(inputdir):
         if not pcapFilename.endswith(".pcap"):
            continue
         subprocess.run(["tshark", "-r",
             os.path.join(inputdir, pcapFilename),
             "-q", "-z", "io,stat,1"],
            stdout=outfile, check=True)

我自己解决了问题。

`@echo off 
    set cap_files="*.pcap" 
    set cap_folder="c:\testfolder\" 
    set tshark_cmd="c:\Program Files\Wireshark\tshark" 
    echo. > %outfile% 
    for /r %cap_folder% %%f in (%cap_files%) do ( 
    echo Processing File: %%f %tshark_cmd% -r %%f -q -z io,stat,1 >> %%f.txt ) 
    echo.`

感谢您的帮助。是的 python 在这里没有多大意义,但我喜欢练习编码。