このディレクトリの下にpythonスクリプトがあります:
work/project/test/a.py
a.py
内で、subprocess.POPEN
を使用して、別のディレクトリからプロセスを起動します。
work/to_launch/file1.pl, file2.py, file3.py, ...
Pythonコード:
subprocess.POPEN("usr/bin/Perl ../to_launch/file1.pl")
そして、work/project /の下に、次のように入力します
[user@machine project]python test/a.py,
エラー "file2.py、 'そのようなファイルまたはディレクトリはありません'"
work/to_launch/
を追加して、これらの依存ファイルfile2.py
を見つけるにはどうすればよいですか?
相対パスは現在の場所(_test/a.py
_の1レベル上)に対して相対的に表示されるため、コードは機能しません。
_sys.path[0]
_には、現在実行中のスクリプトのパスがあります。
os.path.join(os.path.abspath(sys.path[0]), relPathToLaunch)
と_relPathToLaunch = '../to_launch/file1.pl'
_を使用して、_file1.pl
_への絶対パスを取得し、それを使用してPerl
を実行します。
[〜#〜] edit [〜#〜]:file1.plをそのディレクトリから起動してから戻る場合は、現在の作業ディレクトリを覚えてから元に戻します。
_origWD = os.getcwd() # remember our original working directory
os.chdir(os.path.join(os.path.abspath(sys.path[0]), relPathToLaunch))
subprocess.POPEN("usr/bin/Perl ./file1.pl")
[...]
os.chdir(origWD) # get back to our original working directory
_
現在の作業ディレクトリではなく、スクリプトに関連するパスを使用します
os.path.join(os.path.dirname(__file__), '../../to_launch/file1.pl)
Python:姉妹ディレクトリのファイルへのパスを取得しますか? に対する私の答えも参照してください。
このコードを使用して、現在のディレクトリを設定できます。
import os
os.chdir("/path/to/your/files")