将curl命令从google-colab转换为python脚本

2024-01-23

我有以下谷歌colab代码:

code :

!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip

!unzip ngrok-stable-linux-amd64.zip

LOG_DIR = './log'
get_ipython().system_raw(
    'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
    .format(LOG_DIR)
)

get_ipython().system_raw('./ngrok http 6006 &')    
! curl -s http://localhost:4040/api/tunnels | python3 -c \
    "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"

输出:https://6a112ff8.ngrok.io https://6a112ff8.ngrok.io

我的问题是如何将curl管道python命令(最后3行)转换为python脚本?目前它正在 google colab 中执行。

我尝试使用以下代码接近解决方案:

import sys, json
import requests
from IPython import get_ipython


LOG_DIR = './log'

get_ipython().system_raw(
    'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
    .format(LOG_DIR)
)

response = requests.get('http://localhost:4040/api/tunnels')
# result=json.load(response)
print(json.load(response)['tunnels'][0]['public_url'])

但是我收到错误:

AttributeError: 'NoneType' object has no attribute 'system_raw'

! curl -s http://localhost:4040/api/tunnels | python3 -c \
    "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"

要在纯Python中不使用curl来完成此操作,您可以使用requests库,并且json响应对象的方法(r在此示例中)它返回一个字典:

import requests
try:
    r = requests.get('http://localhost:4040/api/tunnels')
    d = r.json() 
    public_url = d['tunnels'][0]['public_url']
except Exception as e:
    print ('Failed: ', e)

# Do something with `public_url`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将curl命令从google-colab转换为python脚本 的相关文章

随机推荐