私は、複数のログファイルを解析し、処理されたファイルのリストを管理するスクリプトを作成しています。私はos.walk
を使用して、次のような名前を取得し処理するファイルのリストを読み込むとき:「ルート」は、前方使用と思わPython - os.path.sepを変更できますか?
:
C:/Users/Python/Documents/Logs\ServerUI04\SystemOut_13.01.01_20.22.25.log
これは、次のコードによって作成されましたセパレータとしてスラッシュ(私はWindows上にあり、より便利だと思うが) "ファイル名"はバックスラッシュを使用するので、ファイルのパスが矛盾し、セパレータとして前方スラッシュとバックスラッシュが混在してしまう。
私は、セパレータを設定しようとしている:.join前
os.path.sep = "/"
と
os.sep = "/"
が、効果がないようです。私は理論的には文字列を操作することができますが、私のスクリプトをUnixとWindows上で動作させたいという長期的な言葉は、できるだけ動的であることが望ましいと思います。
何か不足していますか?
アップデート:私はそれを変更した場合
logFileFolder = ['C:/Users/Python/Documents/Logs']
:私の問題は、私はこのようなルートとして使用される初期パスを設定していた利便性のために、自己招いたように、その下の役に立つの応答に基づいて
が見えます
logFileFolder = ['C:\\Users\\Python\\Documents\\Logs']
すべてが機能し、その結果のファイルパスはすべて「\」を使用します。私のアプローチが間違っているように見えます。私が値として設定していたものを修正するのではなく、Pythonの動作を変更しようとしていたからです。
ありがとうございました!
に動作します私は手足に出て行って、 'os.sep'を設定することはおそらく正しいではないことを言うだろう溶液。 –
[os.path.joinはos.path.sepまたはos.sepを使用しないでください](http://stackoverflow.com/questions/12086224/why-not-os-path-join-use-os) -path-sep-or-os-sep) – BrenBarn
重複した質問の回答者が指摘するように、 'os.path'はあなたのOSに応じて' posixpath'または 'ntpath'をインポートして動作します。興味深いことに、これらのモジュールのソースコードでは、パス区切り文字が 'join'関数内の文字列リテラルとしてハードコーディングされているので、独自の' join'関数を記述することなく変更することはできません。 – BrenBarn