1

私はPythonでスクリプトを書いています。ユーザーは、スクリプトを実行するためのフォルダを入力する必要があります。ファイルのコピーや移動があり、ある時点でフォルダが削除されます。ですから、このスクリプトをルートフォルダで実行しないようにしてください。 (またはその問題の現在または親)Python - 入力を検証するのがルートではなく、実際のフォルダです

私はこれを検証する必要があります。しかし、 "/" "。" ".."などの入力はすべて完全に有効であり、os.path.isdir()を使用している既存のフォルダであるため、どうすればよいのでしょうか。

これらのシステムフォルダシンボルの入力を手動でチェックする必要があります。または、入力が実際の既存のフォルダであるかどうかを確認するための良い方法(おそらく?)はありますか?(ルート、現在、親など...)

答えて

5

あなたはを正規化したいあなたのパスを絶対にしてください。おそらく、また、シンボリックリンクを解消したい:パスは絶対作る

import os.path 

normalized = os.path.realpath(os.path.absolute(path)) 
if normalized == '/': 
    raise ValueError("Can't use root as a destination") 

は、任意の現在または親パスの参照、ならびに任意の二倍セパレータを排除します。

1

パス内の '..'を禁止するか、abspathを使用して実際のパスを取得します。

関連する問題