【发布时间】:2013-12-16 20:20:06
【问题描述】:
我有一个需要使用批处理文件运行的 Python 脚本,但我一直在使用 cmd 对其进行测试。通过cmd运行时,它工作正常。但是,脚本在通过批处理文件运行时似乎表现不同。我已经隔离了似乎是问题的代码部分:
CRFOLDER = "some path to all my files"
isReady = False
os.startfile(os.path.join(CRFOLDER,"CLogger.exe"))
while not isReady:
try:
open(os.path.join(CRFOLDER,"CRPYLog.py"))
isReady = True
except:
print "Not ready yet"
time.sleep(0.25)
import CRPYLog as PyLog
这段代码调用了一个可执行文件,该可执行文件创建了一个 Python 文件,然后我将其导入(如果您对原因感到好奇,请查看 here)。正如我所说,这在通过 cmd 运行时工作正常。但是,当我使用批处理文件时,while 循环会无限运行(或者至少持续 2 分钟,当通过 cmd 运行时,它只会碰到一次except)。这很奇怪。我检查了this、this 和this 问题,但没有运气。批处理文件如下。
start Y:\Admin\Anaconda\python.exe "Y:\Projects\Advent - Overhead Projects\Copy - ADV001 - CR Records Management - Copy\Python\CRWizard.py"
我已尝试将确切的命令粘贴到 cmd 中,它工作正常,但批处理文件没有。提前致谢
【问题讨论】:
-
什么是
CRFOLDER?是否在两种情况下都指向相同的位置(批处理文件并直接运行)? -
这两次运行的 CRFOLDER 值是多少?您使用 startfile 代替
subprocess.call的原因是什么? -
我已经更新了问题,
CRFOLDER是我所有文件所在的路径。我让它打印出os.path.join(CRFOLDER,"clogger.exe")和os.path.join(CRFOLDER,"CRPYLog.py")的值,它们看起来都是正确的 -
@alko,我认为
startfile是在默认程序中打开文件的最简洁方式,但我怀疑它有什么神圣之处 -
你的
CLogger.exe可以记录创建文件的绝对位置吗?
标签: python windows batch-file cmd