脚本中的子进程不起作用,手动启动时会起作用
Posted
技术标签:
【中文标题】脚本中的子进程不起作用,手动启动时会起作用【英文标题】:Subprocess in script doesn't work, when started manually it does 【发布时间】:2014-11-12 10:52:44 【问题描述】:我有一个从 mssql 数据库读取数据并将读取数据传递给 some.exe
的子进程的脚本。
数据获取工作正常,但是一旦它应该开始 proc = subprocess.(["C:\\absolute\\path\\some.exe ", fetched_data]) proc.wait()
它似乎会跳过它并继续下一个 "fetched_data".. 我也尝试使用 subprocess.call(["C:\\absolute\\path\\some.exe ", fetched_data])
如果我在控制台 (windows cmd) 中启动 python
并执行完全相同的操作。
为什么在脚本中调用子进程不起作用,如果在控制台中手动发出它会起作用?
编辑:问题是在脚本中启动的子进程再次使用了another.exe
,子进程找不到它(因为它使用了python路径)。从some.exe
和another.exe
所在的目录启动时,脚本运行良好。
【问题讨论】:
您确定在每种情况下都使用相同版本的 python 吗?有些人的电脑里有多条蟒蛇。 你有完整的代码吗?您确定您的代码实际上要进入子流程行吗?有一个print "test"
来确认它实际上正在进入子流程
@Paul 是的,我已经明确检查过了。 @sumshi 我可以发布代码,但我认为没有必要。我在子进程调用之前和之后都打印了,它的打印没有延迟或输出some.exe
【参考方案1】:
fetched_data 因此是一个附加参数:
proc = subprocess.call(["C:\\absolute\\path\\some.exe ", fetched_data])
这是一个参数 LIST 而不是字符串,这是子进程所期望的。
【讨论】:
你是对的,这就是我在代码中的方式,所以这不会是错误。不过谢谢。 所以some.exe
没有被调用,或者它没有返回任何东西?
我刚刚检查了一下,它显然返回了错误级别 2。如果我在 cmd 中使用相同的参数运行some.exe
,它不会......所以这是参数语法的问题脚本肯定。谢谢你带我去那里。
错字:subprocess.(
缺少方法
@Paul:谢谢! c&p 错误以上是关于脚本中的子进程不起作用,手动启动时会起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 自动化脚本中搜索字符串中的子字符串? indexOf() 和 search() 方法不起作用
当 django 在 IIS 中托管时,python django 中使用的子进程不起作用