从不同的工作目录运行Python脚本

时间:2015-12-30 11:27:19

标签: python subprocess

我有这个程序Namechange.py,它改变了文件中的名字(总是削减一些无用的结尾)。一切正常,但我在很多不同的目录中使用这个文件,当我想改变一些东西时,这很麻烦。我正在寻找的是一个python脚本 让我在我选择的目录中执行此脚本。

我的第一个想法是我运行了另一个复制Namechange.py的脚本 在所需的目录中,然后在那里执行它并删除它 一切都结束了。复制部分有效。 直到现在我尝试使用符号链接(它只是在工作目录中执行脚本:D)以及子进程模块,它表示我使用时没有这样的目录:

  

subprocess.call([" cd",newpath])

newpath是我想要使用脚本的目录的绝对路径。

错误OSError:[Errno 2]没有这样的文件或目录。

如果某人有一种优雅的方式来实现这一点,我会很高兴。

谢谢,再见

2 个答案:

答案 0 :(得分:4)

在脚本的开头

import os
os.chdir("/dir/to/goto/before/running/the/script")

# rest of the logic goes here

假设您的脚本像这样运行

./ my_script dir / to / work / on

然后你可以做

import os
import sys
os.chdir(sys.argv[1])

# rest of the logic goes here

答案 1 :(得分:1)

从任何地方使用的东西应该可以从任何地方访问。

这就是系统的PATH环境变量的来源。

您应该将脚本移动到PATH中的目录,或者使用脚本的位置扩展PATH

注意: 确保脚本独立于位置:广泛使用sys.path,尝试尽可能使用sys.path.join(base, sub)等等。