请教一个python调用其他程序运行出错的问题

starytx 2014-01-09 06:17:45
问题描述:客户方运行系统;英文版xp,该程序(vs2005开发的cmd程序)单独自己运行没有问题,就是用python调用会出现just-in-time debugger的错误提示框,后来根据网上讲的删除某两个注册表信息,再运行后不出现这个错误框了,但是直接是崩溃的那个错误框了(发送错误报告的那个)。比较奇怪的是我在自己的win7中文版系统上用python来调用运行也没有问题,所以我们怀疑是xp和win7环境不同,但是当在另一个xp环境上用python运行时还是没有问题,总之就是在客户的英文xp系统是用python调用运行就有问题,但是直接运行没有问题,所以实在搞不懂原因了,没办法只有在程序中加了一些输出信息来慢慢看了,为了碰碰运气发个帖子看看。
附带那个python调用的方法,就是一个test.py,里边的内容如下示例。

from subprocess import *
s_cmd_line=r'xxx.exe xxx xxx'
p= Popen(s_cmd_line, stdin=PIPE,stdout=PIPE,stderr=PIPE,shell=True)
out,err=p.communicate()
...全文
305 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
starytx 2014-01-11
  • 打赏
  • 举报
回复
没有办法只有将原来使用xcopy命令复制文件的地方改用其他方法复制了。
ImN1 2014-01-10
  • 打赏
  • 举报
回复
你最好详阅手册吧,Popen这个函数注意事项太多了 出现问题就要不断微调参数 On Windows with shell=True, the COMSPEC environment variable specifies the default shell. The only time you need to specify shell=True on Windows is when the command you wish to execute is built into the shell (e.g. dir or copy). You do not need shell=True to run a batch file or console-based executable. Warning Passing shell=True can be a security hazard if combined with untrusted input. See the warning under Frequently Used Arguments for details. 这只是其中之一,不一定就是问题所在 另外就是我觉得 p.wait() 是不可或缺的
starytx 2014-01-10
  • 打赏
  • 举报
回复
引用 2 楼 angel_su 的回复:
用os.system调用呢?会不会宕?不会的话转向到文件再读回信息,方正原来也是阻塞调用...
用os.system调用没问题。现在我需要重新描述一下问题了,因为昨天定位了半天后来发现程序当掉是因为程序中调用cmd.exe执行dos命令没有起作用,也就是xcopy在此场景下没有复制成功文件夹。奇怪的是如果用python直接调用cmd来执行这个xcopy命令的话是可以拷贝的,但如果调用一个控制台程序的话,控制台程序中执行xcopy就没有作用,或者直接运行控制台程序也是可以的,唯独就是用python的popen来调用里边包含dos命令的控制台程序就不起作用了。
angel_su 2014-01-09
  • 打赏
  • 举报
回复
用os.system调用呢?会不会宕?不会的话转向到文件再读回信息,方正原来也是阻塞调用...
bugs2k 2014-01-09
  • 打赏
  • 举报
回复
你这个信息也太少了吧,只能建议从英文和中文环境本身看看是否能够找到问题,可以用python设置语言环境试试

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧