8

Pythonの標準ライブラリに慣れようとし、Windowsマシンでそれをいじくり回します。Python 2.7を使用すると、次の小さなスクリプトがあります。これは、ディレクトリを検索し、ファイル名から数字を削除した後、その中のすべてのファイルの名前を変更することを目的としています。「strではなく、NULLバイトなしで文字列をエンコードする必要がある」というタイプエラーが発生します

以下に示す5行目と18​​行目を呼び出します。ここで、imはos.path.existsを使用しています。

どんな助けでも大歓迎です!

    import os, re, string, glob

    path = os.path.normpath('C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest')

ln5:if os.path.exists(path):
        print "path exists at " + path
        for file in glob.glob(os.path.join(path, '*.jpg')):
            new_path = os.path.join(os.path.dirname(file), re.sub('\d', '', os.path.basename(file)))
line18:     if not os.path.exists(new_path):
                os.rename(file, new_path)
4

3 に答える 3

12

"... Photos \ Modified \ 0-PyTest"

\0をヌル文字として使用します。\を使用してエスケープするか、文字列の前\\にanを付けて生にする必要があります。r

r'C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest'
于 2013-12-20T20:34:21.300 に答える
1

単一のバックスラッシュの問題であることが判明しました。os.path.normpathは、OSの要求に応じてパスをフォーマットすると思いました。

于 2012-10-16T15:11:37.250 に答える
0

パスのURLを指定する場合は、その前にrを追加するだけです。

(r'E:\ Images \ 1.png')

于 2016-12-21T10:54:46.817 に答える