如何检查带有命令行参数的进程是否在Python中运行

Dan*_*lch 2 python command-line-arguments

我想检查一个脚本是否在python脚本中以特定的命令行参数运行。

例如,我想检查是否:

main.py testarg
Run Code Online (Sandbox Code Playgroud)

在跑。有什么办法可以实现?

提前致谢

Tom*_*ese 7

您可以使用以下sys.argv列表:

import sys

if "testarg" in sys.argv:
    # do something
Run Code Online (Sandbox Code Playgroud)

对于更复杂的参数解析,建议使用argparse


相反,如果您要搜索当前的进程列表,则应使用一个库psutil来确保最大程度的平台兼容性。

import psutil

for process in psutil.process_iter():
    cmdline = process.cmdline
    if "main.py" in cmdline and "testarg" in cmdline:
        # do something
Run Code Online (Sandbox Code Playgroud)

  • 应该是cmdline = process.cmdline()而不是cmdline = process.cmdline (5认同)

Bak*_*riu 5

您可以使用psutil图书馆。

import psutil

process_is_running = False

for process in psutil.process_iter():
    if process.cmdline == what_you_want:
        process_is_running = True
Run Code Online (Sandbox Code Playgroud)

这几乎适用于任何操作系统和 python 2.4 到 3.3。

  • +1 只是一个小问题,在 python3 中`process.cmdline` 是一种方法。所以上面应该改为`if process.cmdline() == what_you_want:`(不确定`python2`) (4认同)