Python gzip:stdin:输入/输出错误/bin/sh:第1行:/logfo/dynamo.log-20150317.gz:权限被拒绝

Python gzip:stdin:输入/输出错误/bin/sh:第1行:/logfo/dynamo.log-20150317.gz:权限被拒绝,python,Python,当我执行脚本时,我得到的输出为: import subprocess g_rep = 'zgrep i_d /logfo/dynam*' f = open('fi.txt', "r") for i in f: g_rep = 'zgrep ' + i + ' /logfo/dynam*' print g_rep k = subprocess.Popen(['zgrep ' + i + '/logfo/dynamo*'], shell=True)

当我执行脚本时,我得到的输出为:

import subprocess
g_rep = 'zgrep i_d /logfo/dynam*'
f = open('fi.txt', "r")
for i in f:
        g_rep = 'zgrep ' + i + ' /logfo/dynam*'
        print g_rep
        k = subprocess.Popen(['zgrep ' + i + '/logfo/dynamo*'], shell=True)
        print k

g_rep = 'zgrep ' + i + ' /logfo/dynam*'
print g_rep
zgrep 211043369013
/logfo/发电机*
zgrep 211043369013
/logfo/发电机*
但实际产出应该是<代码>zgrep 211043369013/logfo/dynam*
请帮助我如何引入单行

不完全确定您想要实现什么,但是
i
将有一个换行字符,因此您可以在不同的行上看到输出,您需要:

zgrep 211043369013

/logfo/dynam*
<subprocess.Popen object at 0xabe190>

zgrep 211043369013

/logfo/dynam*
您似乎正在重新分配并且没有使用一些变量,例如
g_rep
的初始值,我还认为check_输出可能更适合在不使用
shell=True
的情况下传递参数列表:

'zgrep ' + i.rstrip() + ' /logfo/dynam
import subprocess

with open('fi.txt') as f:
    for i in f:
        g_rep = 'zgrep {} /logfo/dynam*'.format(i.rstrip())
        print g_rep
        k = subprocess.check_output(["zgrep",i.rstrip(),"/logfo/dynam*"])
        print k