当我在控制台中运行一个程序时,我得到一些文本输出。 当我在Popen(..)中运行同一个程序时,参数相同,stdout和stderr为空。在
我尝试了我能想到的一切,比如shell=False和shell=True,设置stdout=子流程.管道,做了一个os.chdir公司()若要切换到此程序的目录,请尝试p.wait()和p.communicate(),将命令设置为列表和字符串,但没有任何效果。在
示例:
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
out, err = p.communicate()
-->;out和err是空字符串,但如果在控制台中运行此命令,则会得到实际输出。命令带有完整路径,因此无论命令将从何处启动都是如此。在
我的问题是,程序是否有机制来检测它们没有在真正的控制台中运行?如果是这样,我怎么能作弊呢。在
或者想念我什么的?在
(Python 2.7.8。Win7 x64中的x32)
试试这个,看看有没有什么不同。还要确保
command
是一个字符串而不是一个list/tople,shell=True
无论出于什么原因,它都能更好地工作,或者只与字符串一起使用。 还要注意,shell=True
会因为不安全等原因而被吊死同时跳过
.communicate()
你需要关闭stdout
,否则缓冲区将满,你可能会同时挂起你的进程和子进程。在如果这不起作用,请提供更多信息。例如使用的命令和预期输出(至少前几行)
相关问题 更多 >
编程相关推荐