从不同的路径调用python脚本并更改路径

2024-05-19 14:42:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本: 我的_脚本.py 我想从另一个脚本调用主.py在不同的目录中。你知道吗

我是这样做的:

/home/path/to/my/main/script/主.py

import subprocess

def call_script():
    path_to_python = '/home/path/to/another/script/my_script.py'
    subprocess.call(["python", path_to_python])

/home/path/to/other/script/my_脚本.py

do_some_work('log_files/logs.log')

我得到以下错误:

File "/usr/lib/python3.5/logging/__init__.py", line 1037, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
FileNotFoundError: [Errno 2] No such file or directory: '/home/path/to/my/main/script/log_files/logs.log'

我看到被调用的脚本使用来自原始脚本位置的路径作为其基本路径。
我怎样才能得到我的_脚本.py使用自己的路径? 我不想打开一个新的外壳。你知道吗


Tags: topathpyself路径脚本loghome
2条回答

使用cwd函数参数:

path_to_python = '/home/path/to/another/script/my_script.py'
subprocess.call("python", cwd=path_to_python)

有关docs的详细信息。你知道吗

在你的my_script.py里做一个os.chdir()

中的CWD(当前工作目录)继承自父进程。因此,由于您是从主脚本的位置运行脚本,因此子进程的CWD仍然设置为/path/to/main.py

如果您执行os.chdir('/path/to/my_script.py'),您的CWD将更改为my_script.py的目录。你知道吗

或者,也可以在脚本中使用日志文件的绝对路径。你知道吗

相关问题 更多 >