私は2つのパスを持っているとしましょう:最初のパス(ファイルまたはフォルダのパス):file_path
と2番目のパス(フォルダパスのみ):folder_path
。そして、file_path
と一緒に配置されたオブジェクトがfolder_path
と一緒に配置されたオブジェクトの内部にあるかどうかを調べたいと思います。指定されたファイルが指定されたフォルダの中に置かれているかどうかを確認するには?
は、私がこれを行うためのアイデアがあります
import os
...
def is_inside(file_path, folder_path):
full_file_path = os.path.realpath(file_path)
full_folder_path = os.path.realpath(folder_path)
return full_folder_path.startswith(full_file_path)
を、私は、このアプローチでは、いくつかの落とし穴があるんです。また、これを行うにはもっときれいな方法が必要だと思います。
解決策はLinux上で動作する必要がありますが、いくつかのクロスプラットフォームのトリックを提案していただければ幸いです。
さて、私の質問で提案したのとまったく同じものではありませんか? – ikostia
@ikostia - はい、いいえ。 Linux(そしておそらくWindows上)では、 'commonprefix'は最も長い開始部分文字列を照合することで実装できます。しかし、プラットフォームがあれば、何らかの理由でPythonが動作しないところでPythonが実装されていると、 'commonprefix'は引き続き動作します。あなたは、あなたが心配していた落とし穴の種類については、あまり特定されませんでした。あなたがより具体的であれば、私はあなたに良い答えを与えることができます。 – Omnifarious
まあ、私は開発時に見逃すことができる様々な落とし穴を意味しました。私はちょうど別の人がこの問題をはるかに違う形で解決し、彼の選択を私に説明するかもしれないと思った。しかし、今私はそれがおそらく私がやりたいことをするための最善の方法だと思っています。 – ikostia