「Pythonにおけるパスの表現」

Pythonパス表現

ファイルパスを文字列で表現するのを避け、代わりにPathlibを使用すべき理由

写真 by Matt Duncan on Unsplash

ファイルシステムでの作業はプログラミングにおける最も単純なタスクの一つです。驚くべきことに、私たちの多くはまだ文字列でファイルパスを表現しようとするため、それを間違えることがあります。これは基本的に間違っており、おそらく既に多くの異なるPythonリポジトリで見たことのある最も一般的なアンチパターンの一つです。

今日の記事では、文字列(またはosモジュール)を使用してファイルシステム上のパスを表現するのは良くない理由について説明します。さらに、ベストプラクティスについて説明し、pathlibパッケージを使用してPythonでファイルパスを適切にコーディングする方法を実際に見てみましょう。さあ、始めましょう!

文字列を使用してパスを表現するのは良くない理由

異なるオペレーティングシステムは、ファイルシステム上のパスを表現する際に異なる命名規則を使用します。たとえば、Unixではスラッシュ/をディレクトリセパレータとして使用し、Windowsではバックスラッシュ\を使用します

# Unix(例:Linux、OSXなど)/home/this/is/a/path/to/a/directory# WindowsC:\home\this\is\a\path\to\a\directory

コードの移植性は、ソースコードを同じ動作で複数の異なる環境で実行できるようにするための原則のセットを指します。したがって、文字列でのパス表現では、ソースコードが実行されるオペレーティングシステムによって異なる方法でパスを処理しない限り、これは不可能です。

しかし、その場合でも、コードが乱雑で不必要に複雑になります。

# これは悪い習慣ですimport platformif platform.system() == 'Windows':  filepath = 'C:\home\this\is\a\path\to\a\directory'else:  # 例:OSXの場合は 'Darwin' または 'Linux'  filepath = '/home/this/is/a/path/to/a/directory'

パスを表す文字列に対するさらなる操作も複雑になります。例えば、2つのパスを連結したい場合、単純な文字列の連結では無効なパスになる可能性があります。特に、1つ以上の文字列にスラッシュやバックスラッシュなどの特殊文字が含まれている場合です。

path_1 = '/this/is/a/path/'path_2 = '/another/path'# filepath = '/this/is/a/path//another/path'filepath = path_1 + path_2

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIテクノロジー

アンソニー・グーネティレケ氏は、Amdocsのグループ社長であり、テクノロジー部門および戦略部門の責任者です- インタビューシリーズ

アンソニー・グーネティレーケは、Amdocsでグループ社長、テクノロジーと戦略担当です彼と企業戦略チームは、会社の戦略を策...

人工知能

キャルレールの最高製品責任者、ライアン・ジョンソンへのインタビューシリーズ

ライアンは、初期のスタートアップからフォーチュン100の組織まで、多様なテクノロジーと製品開発のリーダーシップ経験を15年...

人工知能

「アナコンダのCEO兼共同創業者、ピーターウォングによるインタビューシリーズ」

ピーター・ワンはAnacondaのCEO兼共同創設者ですAnaconda(以前はContinuum Analyticsとして知られる)を設立する前は、ピー...

機械学習

「Prolificの機械学習エンジニア兼AIコンサルタント、ノラ・ペトロヴァ – インタビューシリーズ」

『Nora Petrovaは、Prolificの機械学習エンジニア兼AIコンサルタントですProlificは2014年に設立され、既にGoogle、スタンフ...

人工知能

「リオール・ハキム、Hour Oneの共同創設者兼CTO - インタビューシリーズ」

「Hour Oneの共同創設者兼最高技術責任者であるリオール・ハキムは、専門的なビデオコミュニケーションのためのバーチャルヒ...

人工知能

「コマンドバーの創設者兼CEO、ジェームズ・エバンスによるインタビューシリーズ」

ジェームズ・エバンズは、CommandBarの創設者兼CEOであり、製品、マーケティング、顧客チームを支援するために設計されたAIパ...