如何从终端向Google Colaboratory提交并运行Python大文件?
没问题,我来帮你一步步搞定在Colaboratory里运行这些Python文件的需求,包括适配那个无法修改的JS调度逻辑:
第一步:把Python文件传到Colab环境
Colab的会话是临时的,所以得先把文件弄进它的运行环境里,有几种靠谱的方式:
- 直接界面上传:打开Colab后,左侧面板点「文件」图标,再点「上传」按钮,选本地的Python文件就行。大文件也支持,但会话结束后文件会消失,下次要重新传,适合临时用。
- 挂载Google Drive长期保存:如果文件存在你的Google Drive里,或者想长期留存,用代码挂载Drive:
运行后按提示授权,之后就能像访问本地文件夹一样访问Drive里的文件,比如from google.colab import drive drive.mount('/content/drive')/content/drive/MyDrive/你的Python文件目录/,这样下次打开Colab直接挂载就能用,不用重复上传。 - 终端命令拉取文件:如果文件在公开URL或者你能通过终端访问的位置,打开Colab的终端(左侧面板「终端」图标),用
wget或curl拉取:wget https://你的文件地址.py
第二步:运行Python文件的两种方案
方案1:终端指定文件名直接运行
打开Colab的终端,和本地终端操作一样,直接用Python命令运行文件:
python your_script.py
需要传参数的话,直接加在后面就行:
python your_script.py --input data.txt --output result.json
方案2:适配不可修改的JS文件调度
因为你改不了JS,那得让JS能触发Colab里的脚本运行,这里有两个可行思路:
思路1:在Colab里搭个简单Web服务
用Python的轻量Web框架(比如Flask)在Colab里启动服务,让JS发送HTTP请求指定要运行的脚本。示例代码如下:
首先安装依赖:
pip install flask pyngrok
然后运行服务:
from flask import Flask, request import subprocess from pyngrok import ngrok app = Flask(__name__) @app.route('/run-script', methods=['POST']) def run_script(): # 从请求里获取JS传来的文件名 script_name = request.json.get('script_name') if not script_name: return {'error': '没有指定要运行的脚本文件名'}, 400 # 运行指定的Python文件,捕获输出 run_result = subprocess.run( ['python', script_name], capture_output=True, text=True ) return { 'stdout': run_result.stdout, 'stderr': run_result.stderr, 'return_code': run_result.returncode } # 用ngrok把Colab的内网端口暴露成公网URL,让JS能访问 port = 5000 public_url = ngrok.connect(port).public_url print(f"JS可以访问这个URL来触发脚本:{public_url}/run-script") app.run(host='0.0.0.0', port=port)
之后JS只要向这个公网URL发送POST请求,Body里带上{"script_name": "你的脚本文件名.py"},就能触发对应的Python文件运行了。
思路2:调用Colab官方REST API
Colab提供了REST API,可以通过API创建笔记本、运行代码单元格。你可以让JS调用这个API,动态生成运行指定Python文件的代码单元格。不过这个需要配置OAuth认证,步骤相对复杂,适合有API开发经验的场景。
官方文档参考
- 文件操作相关:Colab官方帮助中心里的「Working with files in Colaboratory」章节,详细讲解了上传、挂载Drive、终端文件操作的所有细节。
- REST API相关:官方的「Colaboratory REST API」文档,包含认证方式、API端点的详细说明。
- Web服务部署:Colab的示例笔记本里有「Deploying a web app on Colab」的教程,你可以在Colab的「文件」→「打开示例」里找到。
内容的提问来源于stack exchange,提问作者dJOKER_dUMMY
相关产品推荐
相关产品推荐

