如何修复/获取在脚本中工作的子进程调用的awk命令(在pythonshell中工作)?

如何修复/获取在脚本中工作的子进程调用的awk命令(在pythonshell中工作)?,python,shell,command-line,Python,Shell,Command Line,我试图从python脚本中调用以下命令并获得该命令的输出:awk-F':''$1==“VideoEdge”{print$2,$3,$8}'/etc/shadow 我在python shell中使用subprocess.check_output和.Popen使函数工作,但是当从脚本调用时,它不工作,并导致一个没有明显输出或消息的异常 如何从脚本中获取此命令 我已经尝试使用check_output、Popen和shlex来帮助解决我认为可能导致问题的问题。代码在shell中运行良好 temp = "

我试图从python脚本中调用以下命令并获得该命令的输出:awk-F':''$1==“VideoEdge”{print$2,$3,$8}'/etc/shadow

我在python shell中使用subprocess.check_output和.Popen使函数工作,但是当从脚本调用时,它不工作,并导致一个没有明显输出或消息的异常

如何从脚本中获取此命令

我已经尝试使用check_output、Popen和shlex来帮助解决我认为可能导致问题的问题。代码在shell中运行良好

temp = "User"
cmd = "awk -F':' '$1 == \"" + temp + "\" {print $2, $3, $8}' /etc/shadow"
cmdOutput = subprocess.check_output(shlex.split(cmd))
print cmdOutput

temp = "User"
cmd = "awk -F':' '$1 == \"" + temp + "\" {print $2, $3, $8}' /etc/shadow"
cmdOutput = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
print cmdOutput.communicate()[0]

我会的。[仅供用户考虑,(在评论中,它将是神秘的)]


我会的。[仅供用户考虑,(在评论中,它将是神秘的)]


使用相同的
shlex.split(cmd)
即可:


cmdOutput=subprocess.Popen(shlex.split(cmd),stdin=PIPE,stdout=PIPE,stderr=PIPE)
对shlex.split(cmd)进行相同的


cmdOutput=subprocess.Popen(shlex.split(cmd),stdin=PIPE,stdout=PIPE,stderr=PIPE)

我在执行命令时遇到了文件权限问题。头撞桌子

我在执行命令时遇到了文件权限问题。头撞在桌子上

第一个块运行良好。第二个块,do
subprocess.Popen(shlex(cmd),stdin=PIPE,stdout=PIPE,stderr=PIPE)
第一个块运行良好。第二个块,do
subprocess.Popen(shlex(cmd),stdin=PIPE,stdout=PIPE,stderr=PIPE)
谢谢,它可以在python shell中工作,但不能在脚本中工作,子流程是否等待命令完成?cmdoutput.communicate()[0]在脚本中返回一个空值,但在外壳中按预期工作。在调用Popen()时,我在shlex中包装了
cmd
,它在脚本中确实工作。谢谢,它在python外壳中工作,但在脚本中不工作。子进程是否等待命令完成?cmdoutput.communicate()[0]在脚本中返回一个空值,但在外壳中按预期工作。在调用Popen()时,我在shlex中包装了
cmd
,它在脚本中对我起作用。
user = "someuser"
with open('/etc/shadow') as f:
    for line in f:
        if line.startswith(user):
            data = line.split(':')
            break
print(data)