如何更改shell脚本的工作目录(这里是新手)

时间:2012-07-09 00:00:11

标签: python linux shell

我有一个python脚本,它在相对目录中查找文件。例如:python脚本位于/home/username/projectname/中。我有一个在/home/username/projectname/subfolder中的python脚本中调用的文件。

如果我以python scriptname.py的形式从shell运行脚本,它运行得很好。

但是,我正在尝试将脚本作为启动服务运行。我在webmin中设置它,我相信它使用终端命令来调用它。在启动命令中,我正在做这样的事情来调用脚本:

execute python home/username/projectname/scriptname.py。该脚本启动正常,但我收到错误,因为它无法访问相关目录中的文件。

我猜测有更好的方法从启动命令中调用python程序,以便它知道相对路径。

3 个答案:

答案 0 :(得分:3)

import os

os.chdir("/tmp")

还有:

os.getcwd()

也许您需要以下内容?

import os.path

dir = os.path.dirname(__file__)

答案 1 :(得分:1)

启动python脚本(可能是forkink)的进程有一个pwd(它的工作目录)。我们的想法是在fork和执行python之前更改进程的密码。

您需要查看执行shell命令的进程的手册,并查看如何设置pwd。(在shell中使用cd或pushd)

答案 2 :(得分:1)

__file__是用于运行脚本的路径。

将其复制到脚本文件中并尝试运行它:

import os

print "This script was run as: %r" % __file__
print "This script is: %r" % os.path.abspath(__file__)

script_dir = os.path.dirname(os.path.abspath(__file__))
print "This script is in directory: %r" % script_dir

print "When started, the current directory was: %r" % os.getcwd()

os.chdir(script_dir)
print "After calling os.chdir(), the current directory is: %r" % os.getcwd()