如何在python中执行shell命令文件

时间:2020-02-18 22:30:34

标签: python

我在执行以下shell命令时遇到麻烦。我在Windows 10中。我不得不在此处删除用户授权,并将其保留为“ tktk”,因为我不想在这里出现我的授权。

ImageView

我将以上命令存储在test.sh文件中 我在执行上述shell命令时遇到了麻烦。它在linux终端上工作。但这在我的Windows cmd上不起作用。我需要阅读上面的网址,获取json对象并对其进行一些分析。

我尝试过的:

curl 'https://pegasus-test.etflogic.io/portfolio/analyze' -H 'authority: pegasus-test.etflogic.io' -H 'pragma: no-cache' -H 'cache-control: no-cache' -H 'accept: application/json' -H 'authorization: tktk' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36' -H 'content-type: application/json' -H 'origin: https://akita.etflogic.com' -H 'sec-fetch-site: cross-site' -H 'sec-fetch-mode: cors' -H 'referer: https://akita.etflogic.com/portfolio-analysis' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9' --data-binary '{"portfolio":{"currency":"usd","id":"8576e266-c6f4-44fe-a6a6-9c64869b55dd","name":"test1","records":[{"locale":"US","id":"df92931e-3063-4889-8e4b-100c66f14d22","name":"SSGA SPDR S&P 500 - SSgA Active Trust","secid":549535,"size":100,"ticker":"SPY US"}],"size_type":"notional","type":"primary"}}' --compressed > /tmp/jsonpayload

这失败。好的...

然后我尝试了...

import subprocess 
ans = subprocess.Popen(["bash",os.path.join(os.getcwd(), 'test.sh')])

我收到错误消息'%1不是有效的Win32应用程序'

2 个答案:

答案 0 :(得分:1)

我将您的test.sh代码复制到了自己的test.sh文件中,并测试了一些不同的东西。

尝试使用os.system而不是subprocess中的方法来调用命令。

这对我有用:

import os
os.system(os.getcwd() + '/test.sh')

如果您更喜欢os.path.join(os.getcwd(), 'test.sh')而不是我在这里拥有的东西,也可以使用它,没有太大区别。

我希望这可以解决您的问题:)

答案 1 :(得分:0)

尝试:

# Importing the necessary packages
$ from subprocess import call  

# Executing the test.sh script
$ call('sh test.sh 2>/dev/null', shell=True)