win python 运行bash脚本_在Windows上从Python执行bash脚本

本文介绍了作者在Windows环境中使用Python执行Bash脚本遇到的问题,包括如何处理输入/输出定向,以及解决Bash命令在脚本中未找到的问题。最终,通过指定bash.exe的完整路径、Bash脚本的路径和工作目录,成功执行了Bash脚本,但仍然遇到了脚本内部命令找不到文件的错误。
摘要由CSDN通过智能技术生成

我正在尝试编写一个python脚本,它将在我的Windows机器上执行bash脚本。到目前为止,我一直在使用Cygwin终端,因此执行bash脚本RunModels.scr就像./RunModels.scr一样简单。现在我希望能够利用Python的subprocess,但是由于Windows没有处理bash的内置功能,我不知道该怎么做。

我试图模拟./RunModels.scr < validationInput > validationOutput

我最初写的是:os.chdir(atm)

vin = open("validationInput", 'r')

vout = open("validationOutput", 'w')

subprocess.call(['./RunModels.scr'], stdin=vin, stdout=vout, shell=True)

vin.close()

vout.close()

os.chdir(home)

但在花了一段时间试图弄清楚为什么我的访问被拒绝后,我意识到我的问题不是文件权限,而是我试图在Windows上执行bash文件。有人能解释一下如何使用python脚本在windows上执行带有定向输入/输出的bash脚本吗?

编辑(后续问题):

感谢您的回复,我需要到我的bash.exe的完整路径作为第一个参数。但是,现在RunModels.scr中的命令行调用在python输出中返回为command not found。例如,ls,cp,make。对此有什么建议吗?

随访2:

我更新了我的电话:

subprocess.call(['C:\\cygwin64\\bin\\bash.exe', '-l', 'RunModels.scr'], stdin=vin, stdout=vout, cwd='C:\\path\\dir_where_RunModels\\')

我现在得到的错误是/usr/bin/bash: RunModels.scr: No such file or directory。

使用cwd似乎对这个错误没有任何影响,无论是哪种情况,子进程都在/usr/bin/bash中查找RunModels.scr。

自我回答

我需要在调用中指定RunModels.scr的路径,并使用cwd。

subprocess.call(['C:\\cygwin64\\bin\\bash.exe', '-l', 'C:\\path\\dir_where_RunModels\\RunModels.scr'], stdin=vin, stdout=vout, cwd='C:\\path\\dir_where_RunModels\\')

但是另一个问题。。。

不管指定cwd,由RunModels.scr执行的命令都会抛出错误,就好像RunModels.scr在错误的目录中一样。脚本执行,但是cp和cd抛出错误no such file or directory。如果我通过命令行导航到RunModels.scr所在的位置,并以传统的方式执行它,我就不会得到这些错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值