[解決済み】python: スクリプトの作業ディレクトリをスクリプト自身のディレクトリに変更する
2022-04-12 15:32:13
質問
crontabから1分ごとにpythonシェルを実行しています。
* * * * * /home/udi/foo/bar.py
/home/udi/foo
のように、必要なサブディレクトリがいくつかあります。
/home/udi/foo/log
と
/home/udi/foo/config
は、どの
/home/udi/foo/bar.py
を参照しています。
問題は、その
crontab
は別の作業ディレクトリからスクリプトを実行するので
./log/bar.log
は失敗します。
作業ディレクトリをスクリプト自身のディレクトリに変更するようにスクリプトに指示する良い方法はないでしょうか?スクリプトに明示的に場所を教えるのではなく、どのスクリプトの場所でも動作するような解決策を空想しています。
EDITです。
os.chdir(os.path.dirname(sys.argv[0]))
最もコンパクトでエレガントな解決策でした。ご回答とご説明をありがとうございました。
どのように解決するのですか?
相対パスを開けるように、現在の作業ディレクトリを変更します。
import os
os.chdir("/home/udi/foo")
しかし、Pythonスクリプトを書くときにどのようなディレクトリになるかわからない場合でも、どのようにすればPythonスクリプトのあるディレクトリに変更できるかという質問がありました。 これを行うには
os.path
という関数があります。
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
これは、スクリプトのファイル名を受け取り、それを絶対パスに変換し、そのパスのディレクトリを抽出し、そのディレクトリに変更します。
関連
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み] Pythonでディレクトリが存在するかどうかを確認する方法
-
[解決済み] Pythonのsite-packagesディレクトリの場所を見つけるにはどうしたらいいですか?
-
[解決済み] 作業ディレクトリを変更するシェル 'cd' コマンドに相当するものですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
Python jiabaライブラリの使用方法について説明
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】Python: OverflowError: 数学の範囲エラー