gpt4 book ai didi

python - 使用 pdsh 通过 linux 解析内联 python 命令

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:21 46 4
gpt4 key购买 nike

因此,我尝试从 python 脚本发出此命令,该脚本收集集群中预定数量的节点的 cpu 信息。这里我使用扇出为 2,并且仅在节点 b127 到 b129 上运行它以进行测试。

    pdsh -f2 -w b[127-129] 'python -c "import multiprocessing
num_cpu = multiprocessing.cpu_count()
stat_fd = open('/proc/stat')
stat_fd.close()"'

我打印了命令,这就是它在终端上显示的内容。因此,告诉我引号和命令的格式正确。我通过执行以下代码获取该字符串:

    python_command = "'python -c "\
+ "\"import multiprocessing\n"\
+ "num_cpu = multiprocessing.cpu_count()\n"\
+ "stat_fd = open(\'/proc/stat\')\n"\
+ "stat_fd.close()\"'"

command = "pdsh -f2 -w b[127-129] " + python_command
print command

不幸的是,带有 open(\'/proc/stat\') 的行似乎是问题所在,因为这是唯一导致解析器因嵌套单引号而失败的行。我尝试了多种引用和转义的组合,以使其不起作用。我在文件打开和关闭之间省略了一些代码,以最大限度地减少发布的代码。

我四处搜寻,发现了这个link ,但发现这个例子太简单了,因为我可以复制这些命令。是的,我知道我可以使用 bash 命令来完成我想要完成的事情,而且我最终可能会这样做,但是这个命令让我头疼不已。我还有使用 top 和 ps 收集数据的脚本,因此我不需要使用它们进行解释。我非常感谢您提前提供的帮助。

最佳答案

试试这个:

python_command = """pdsh -f2 -w b[127-129] 'python -c "import multiprocessing
num_cpu = multiprocessing.cpu_count()
stat_fd = open(\\"/proc/stat\\")
stat_fd.close()"'"""

在 Python 中,您可以对包含换行符和单/双引号的字符串使用三引号("""..."""'''...''')。

最后一级引号(在 open() 行上)需要转义,以便它们不会与外部引号冲突。您还需要转义反斜杠,以便 Python 在解释字符串时不会立即使用它们:\\"

关于python - 使用 pdsh 通过 linux 解析内联 python 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25563614/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com