0

相対ディレクトリでファイルを検索する python スクリプトがあります。例: python スクリプトは/home/username/projectname/. にあるpythonスクリプト内で呼び出されているファイルがあります/home/username/projectname/subfolder

シェルからスクリプトを実行すると、python scriptname.py完全に正常に実行されます。

ただし、スクリプトをスタートアップ サービスとして実行しようとしています。私はそれをwebminで設定していますが、端末コマンドを使用して呼び出すと思います。起動コマンドでは、スクリプトを呼び出すために次のようなことをしています。

execute python home/username/projectname/scriptname.py. スクリプトは正常に起動していますが、相対ディレクトリ内のファイルにアクセスできないため、エラーが発生します。

相対パスを認識できるように、起動コマンド内から python プログラムを呼び出すより良い方法があると思います。

4

3 に答える 3

3
import os

os.chdir("/tmp")

また持っています:

os.getcwd()

たぶん、代わりに次のものが必要ですか?

import os.path

dir = os.path.dirname(__file__)
于 2012-07-09T00:12:30.373 に答える
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()
于 2012-07-09T00:19:48.433 に答える
1

Python スクリプト (おそらく forkink) を開始するプロセスには、pwd (その作業ディレクトリ) があります。アイデアは、Pythonをフォークして実行する前にプロセスのpwdを変更することです。

シェルコマンドを実行するプロセスのマニュアルに目を通し、pwd の設定方法を確認する必要があります (シェルでは cd または pushd を使用します)。

于 2012-07-09T00:06:12.360 に答える