os.popen()变量

2024-06-11 15:42:02 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个相当复杂的申请。。。 简而言之,这是你应该知道的主要事情:

file_name = raw_input("Name your file:").lower()

os.popen(sudo tcpdump -c5 -vvv -w "file_name" host wiki or host wiki2)

但这似乎行不通。我能修好吗? 谢谢, 巴斯特Linux

编辑1: 好吧,这就是我现在所拥有的,但它不起作用,有什么关于如何修复的指示吗?

import subprocess, os, sys

filename = raw_input('File name:').lower

pipe = os.popen("sudo tcpdump -c5 -w", 'filename')

pipe = popen("sudo tcpdump -c5 -w", shell=True, stdout=PIPE).stdout


Tags: namehostinputrawosstdoutsudofilename
3条回答

如果运行的是较新版本的Python,则使用subprocess模块。

有关os.popen的替换详细信息,请访问:

它说:在Unix上,os.popen2、os.popen3和os.popen4也接受一个序列作为要执行的命令,在这种情况下,参数将直接传递给程序,而无需shell干预。

pipe = os.popen("cmd", 'r', bufsize)
==>
pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout

你的问题是你没有传递一个字符串作为你的命令。对popen()的固定调用:

os.popen('sudo tcpdump -c5 -vvv -w {0} host wiki or host wiki2'.format(file_name))

不要使用“os.popen”,应该使用subprocess模块。

我假设这个(字符串):

sudo tcpdump -c5 -vvv -w "file_name" host wiki or host wiki2

是你的命令。

因为我们只需要调用tcpdump而不需要从它获得任何输出,所以我们使用subprocess.call

>>> subprocess.call(your_command.split())

当然,它为什么不起作用取决于错误是什么,但这是你应该怎么做。如果你能用你的错误来更新答案,那么答案就很清楚了。

相关问题 更多 >