python 批量处理文件_将Window BAT(批处理)文件转换为Python脚本

我有一个包含REM,MKDIR,ECHO的DOS命令的Window .bat文件,它运行一些程序,尤其是将所有输出合并到带有时间戳的日志文件中.我想将其翻译成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 to exit.")

我剩下的唯一问题是:当我在Windows中通过以test.bat的方式双击test.py来运行它时,即使所有步骤最终都完成了,我也会收到此错误警告消息:

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

任何想法?

解决方法:

您可能应该使用subprocess模块来调用可执行文件.它允许您指定流程的输入和输出句柄之类的内容,因此可以将它们定向到所需的位置.

标签:dos,python,batch-file

来源: https://codeday.me/bug/20191202/2085845.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值