gpt4 book ai didi

python - 将 Window BAT(批处理)文件翻译成 Python 脚本

转载 作者:行者123 更新时间:2023-11-28 16:50:36 24 4
gpt4 key购买 nike

我有一个 Windows .bat 文件,其中包含涉及 REM、MKDIR、ECHO 的 DOS 命令,运行一些程序,特别是将所有输出组合到一个带有时间戳的日志文件中。我想把它翻译成 Python。

我试过 os.system 但这行不通 - 它会运行我需要运行的程序,但无法连接所有语句,确保所有日志都输出到正确的文件。据我了解,每次使用 os.system 分别调用命令行。

摘录示例:

SET LOG=test.log

DEL /F /Q ..\output\

REM THE LOG STARTS HERE
ECHO test.bat started >%LOG%
ECHO %DATE% >>%LOG%
ECHO %TIME% >>%LOG%

stata/e statascript.do
matlab -r matlabscript -logfile matlabscript.log -nosplash -minimize -wait
lyx -e pdf2 document >>%LOG% 2>&1
COPY %LOG%+statascript.log+matlabscript.log %LOG%


ECHO test.bat completed >>%LOG%
ECHO %DATE% >>%LOG%
ECHO %TIME% >>%LOG%

PAUSE

我的示例代码:

import subprocess, time, sys, os

log = open('test.log', 'w')

p = subprocess.call(r'DEL /F /Q ..\output\\', shell = True)

log.write('test.py started\n')
log.write(time.asctime())
log.write('\n\n\n')
log.flush()

p = subprocess.call(r'%STATAEXE% /e do statacode.do', shell = True, stdout = log)
log.write(open('statacode.log').read())
p = subprocess.Popen('DEL statacode.log', shell = True, stdout = log)


log.write('\n\ntest.py completed\n')
log.write(time.asctime())
log.write('\n')
log.flush()
log.close()
raw_input("Press <Enter> to exit.")

我剩下的唯一问题是:当我在 Windows 中通过双击 test.py 运行它时,就像我用 test.bat 那样,我收到了这个错误警告消息,即使所有的步骤都在结束:

“该进程无法访问该文件,因为它正被另一个进程使用”

有什么想法吗?

最佳答案

您可能应该使用 subprocess模块来调用您的可执行文件。它允许您指定进程的输入和输出句柄等内容,因此您可以将它们定向到您想要的位置。

关于python - 将 Window BAT(批处理)文件翻译成 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8132878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com