You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何指定工作目录运行Python脚本(无需切换目录)

问题

简而言之:期望实现如下效果:

python3.5 --working-dir=~/company_repo/ ~/company_repo/something.py

公司有由对应团队维护的Python脚本;我的bash脚本会按顺序调用这些脚本:

myscript.sh

python3.5 ~/company_repo/scripts/helper1.py someargument
python3.5 ~/company_repo/scripts/helper2.py

部分公司脚本依赖于在公司代码仓库目录下运行,因为它们会调用git命令或通过相对路径加载文件。我无法修改这些公司脚本。

是否有办法让Python运行时使用不同的工作目录?我不想在bash脚本中执行cd ~/company_repo操作。

解决方案

方法1:子shell临时切换目录执行

用括号创建子shell,在子shell内切换目录后执行Python命令,不会改变当前shell的工作目录:

(cd ~/company_repo && python3.5 scripts/helper1.py someargument)
(cd ~/company_repo && python3.5 scripts/helper2.py)

方法2:Python包装脚本切换工作目录

写一个简单的包装脚本,先切换工作目录再执行目标脚本,避免修改原公司脚本:
创建run_in_cwd.py:

import os
import sys
import importlib.util

if len(sys.argv) < 3:
    print("Usage: python run_in_cwd.py <working_dir> <script_path> [args...]")
    sys.exit(1)

working_dir = sys.argv[1]
script_path = sys.argv[2]
script_args = sys.argv[3:]

os.chdir(working_dir)
sys.argv = [script_path] + script_args

spec = importlib.util.spec_from_file_location("__main__", script_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)

bash脚本中调用方式:

python3.5 run_in_cwd.py ~/company_repo ~/company_repo/scripts/helper1.py someargument
python3.5 run_in_cwd.py ~/company_repo ~/company_repo/scripts/helper2.py

方法3:使用env命令(GNU环境适用)

GNU版本的env支持-C参数,可直接指定工作目录执行命令:

env -C ~/company_repo python3.5 scripts/helper1.py someargument

内容的提问来源于stack exchange,提问作者Tomáš Zato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:37:02