ホームページ >バックエンド開発 >Python チュートリアル >現在のスクリプト ディレクトリからファイルを確実に開くにはどうすればよいですか?

現在のスクリプト ディレクトリからファイルを確実に開くにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 06:41:03262ブラウズ

How to Reliably Open Files from the Current Script Directory?

現在のスクリプト ディレクトリからファイルを開く: 包括的なアプローチ

実行中のスクリプトのディレクトリからファイルを開くときは、以下を使用することが重要ですエラーを回避するための適切なテクニック。最初は、open("Some file.txt", "r") の使用は簡単に思えるかもしれませんが、Windows でダブルクリックしてスクリプトを起動すると問題が発生する可能性があります。

これに対処するには、一般的なこのアプローチは、os.path.join(sys.path[0], "Some file.txt") を利用してファイル パスを指定することです。これはほとんどの場合機能しますが、特定のシナリオでは失敗する可能性があります。

代替手段の検討:

  • os.getcwd() および os。 path.abspath(''): これらの関数は「現在の作業ディレクトリ」を提供します。これはスクリプト ディレクトリとは異なる場合があります。
  • os.path.dirname(sys.argv[0] ) および os.path.dirname(__file__): スクリプトの呼び出しに使用されるパスを取得します。パスは相対パスまたは空パスにすることができます。さらに、__file__ は IDLE または PythonWin では使用できません。
  • sys.path[0] および os.path.abspath(os.path.dirname(sys.argv[0])):これらはスクリプト ディレクトリを返すように見えますが、それらが同等であるかは不明です。

含まれるモジュールの検討:

この問題は、次のファイルを開くことでさらに絞り込むことができます。含まれているモジュールと同じディレクトリ。従来の技術では、このニーズに十分に対応できない可能性があります。

信頼できる解決策:

完全に信頼できる解決策は、次のコードを使用することです:

__location__ = os.path.realpath(
    os.path.join(os.getcwd(), os.path.dirname(__file__)))

この行により、起動方法やプラットフォームに関係なく、スクリプト ディレクトリが正確に取得されることが保証されます。このディレクトリ内のファイルを開くには、単に以下を使用します。

f = open(os.path.join(__location__, 'bundled-resource.jpg'))

このアプローチは、Windows と Linux の両方でリソースを Django アプリケーションにバンドルするのに効果的であることが証明されています。

以上が現在のスクリプト ディレクトリからファイルを確実に開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。