【问题标题】:Run a program with python with additional parameters使用带有附加参数的 python 运行程序
【发布时间】:2020-01-03 09:38:45
【问题描述】:

我正在尝试使用参数 -i ethernet -f udp 运行 tshark.exe,但我似乎无法弄清楚如何在 Python 中执行此操作。这是部分代码

from geolite2 import geolite2
import socket, subprocess

cmd = r"C:\Program Files\Wireshark\tshark.exe"

process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
my_ip = socket.gethostbyname(socket.gethostname())
reader = geolite2.reader() 

运行相同的东西,但 cmd = r"C:\Program Files\Wireshark\tshark.exe -i ethernet -f udp 将不起作用。

【问题讨论】:

    标签: python tshark


    【解决方案1】:

    here 开始,可以在列表中指定参数。所以在你的情况下,

    cmd = [r"C:\Program Files\Wireshark\tshark.exe", '-i', 'ethernet', '-f', 'udp']
    

    应该可以。

    【讨论】:

    • 嗯......这并没有给我一个语法错误,这是朝着正确方向迈出的一步,但我仍然没有得到任何输出。我使用了这个cmd = [r"C:\Program Files\Wireshark\tshark.exe", '-i ethernet', '-f udp'],但输出仍然不起作用。输出应显示使用 udp 的任何连接的 ip 及其地理位置
    【解决方案2】:

    如果你需要将参数从命令行传递给 python 脚本,那么你可以使用带有 argv 的 sys 模块,如下所示:

    import sys
    program_name = sys.argv[0]
    arguments = sys.argv[1:]
    count = len(arguments)
    

    使用命令行时,您只需用空格分隔参数。一个例子:

    python ex.py hello world
    

    每个参数将返回的位置:

    print(sys.argv[0])
    

    ex.py

    print(sys.argv[1])
    

    你好

    print(sys.argv[2])
    

    世界

    更多信息可以在here找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-03
      • 2011-04-13
      • 1970-01-01
      • 2014-09-30
      • 2011-09-22
      • 1970-01-01
      • 2013-03-02
      • 2012-05-04
      相关资源
      最近更新 更多