我有一个python脚本,它在相对目录中查找文件。例如:python脚本位于/home/username/projectname/
中。我有一个在/home/username/projectname/subfolder
中的python脚本中调用的文件。
如果我以python scriptname.py
的形式从shell运行脚本,它运行得很好。
但是,我正在尝试将脚本作为启动服务运行。我在webmin中设置它,我相信它使用终端命令来调用它。在启动命令中,我正在做这样的事情来调用脚本:
execute python home/username/projectname/scriptname.py
。该脚本启动正常,但我收到错误,因为它无法访问相关目录中的文件。
我猜测有更好的方法从启动命令中调用python程序,以便它知道相对路径。
答案 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()