6

ファイル名の煩わしいサフィックスを取り除くために、Pythonスクリプトを作成しました。

ここに私のコードがあります:

import os

for root, dirs, files in os.walk("path"):

    for filename in files:

        if filename.endswith("[AnnoyingTag].mov"):

            os.rename(filename, filename[:-18]+'.mov')

しかし、最後の行でエラーが発生しました:

OSError: [Errno 2] No such file or directory

すべてのファイル名を正しく出力できるので、正しいパスがあると確信しています。

...これが機能しない理由が本当にわかりません。

回答ありがとうございます

4

3 に答える 3

13

パスを結合するための推奨される方法はos.path.join、次の行を変更して使用することです。

os.rename(filename, filename[:-18]+'.mov')

これを次のように置き換えます。

os.rename(os.path.join(root, filename), os.path.join(root, filename[:-18]+'.mov'))
于 2013-06-23T05:22:45.170 に答える
8

交換できます

os.rename(filename, filename[:-18]+'.mov')

os.rename(root + os.sep + filename, root + os.sep + filename[:-18]+'.mov')
于 2013-06-23T05:18:57.340 に答える
0

修理済み:

import os

for root, dirs, files in os.walk("path"):
    for filename in files:
        if filename.endswith("[AnnoyingTag].mov"):
            os.rename(root+'\\'+filename, root+'\\'+filename[:-18]+'.mov')

あなたの問題は、名前を変更しているファイルが現在の作業ディレクトリにないことだと思います。

于 2013-06-23T05:16:39.217 に答える