この質問は以前にもあったかもしれませんが、見つけられませんでした。
私はLinuxボックスを使用しています。/avt というフォルダーから実行される py アプリがあります。(例) このコードは私が書いたものではなく、それに付随する約 12 個のモジュールがあります。私はこの混乱を受け継いだ幸運なエンジニアでした。このアプリは、このディレクトリ /avt/bin の下にある他のモジュールをインポートします。現在の作業ディレクトリがどこにあるかに関係なく、/bin ディレクトリでモジュールを見つけられるようにしたいと考えています。場合によっては、アプリがディレクトリを他のサブフォルダーに変更して、ファイル I/O を実行することがあります。その後、戻る必要がありますが、コードが「そのようなファイルまたはディレクトリはありません」というエラーでエラーになるため、戻ってこない場合があるようです。そのため、/bin ディレクトリへのファイル I/O を行う前に、毎回作業ディレクトリをテストしたいと考えています。例として、/bin にファイルを作成し、後でそれらのファイルを開いてデータを読み取りたいと考えています。現在の作業ディレクトリが常に /avt であることを確認するにはどうすればよいですか? そうでない場合は、ch.dirに移動しますか?注: また、任意の Linux マシンの任意のディレクトリ構造で実行する必要がある場合は、移植可能なコードである必要があります。
このコードを試してみましたが、あまりきれいではないと思います。Python は私のメイン言語ではありません。このコーディングは適切で、これで機能しますか? このフォーラム用にフォーマットする方法がわかりません。
Avtfolder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0]))
if Avtfolder not in sys.path:
sys.path.insert(0, Avtfolder)
if Avtfolder.__contains__('/avt'):
modfilespath = Avtfolder + '/bin'
print 'bin dir is ' + modfilespath
else:
print 'directory lost...'
#write some code here that changes to the root /avt dir