我试图从python运行一个命令行程序“oconv”,该程序预期会以其他几个文件作为输入并生成一个输出文件场景.oct一
我试了两个操作系统()和subprocess.call()函数
但是,我要么没有输出,要么输出文件不完整。在
第1类错误代码为32512或127,表示“密钥已过期”,第2类错误代码为256或1,即“不允许操作”。在
奇怪的是,所有4种被测试的命令行字符串组合都可以在macosx的终端上正常运行
我不知道为什么会发生这种情况,因为测试是在一个新安装和更新的macbookpro上用osxmarvericks和python2.7.5完成的。相关的环境路径变量已经在~/.bash_profile和~/.profile中指定(在本例中,我是管理员)。在
我用于测试的python代码如下所示,它包括长/短cmd字符串和带/不带完整cmd路径的四种组合:
import os
import subprocess
### 1. long cmd str, no cmd path (no output, error code: 32512 or 127, meaning Key has expired)
##cmd = "oconv /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/materials.mat /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/sky.rad /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/scene.rad > /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/scene.oct"
##os.system(cmd)
##subprocess.call(cmd, shell=True)
### 2. short cmd str, no cmd path (no output, error code: 32512 or 127, meaning Key has expired)
##cmd = 'oconv ./materials.mat ./sky.rad ./scene.rad > ./scene.oct'
##os.system(cmd)
##subprocess.call(cmd, shell=True)
### 3. long cmd str, full cmd path (can get incomplete output, error code: 256 or 1, meaning Operation not permitted)
##cmd = '/Applications/Radiance_4_3_a_1/bin/oconv /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/materials.mat /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/sky.rad /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/scene.rad > /Volumes/ZJ_WD_2TB_1/_ZJ_Urban_Toolkit_v003/glare_analysis/scene.oct'
##os.system(cmd)
##subprocess.call(cmd, shell=True)
### 4. short cmd str, full cmd path (can get incomplete output, error code: 256 or 1, meaning Operation not permitted)
##cmd = '/Applications/Radiance_4_3_a_1/bin/oconv ./materials.mat ./sky.rad ./scene.rad > ./scene.oct'
###os.system(cmd)
##subprocess.call(cmd, shell=True)
目前没有回答
相关问题 更多 >
编程相关推荐