0

この命名規則を持つWindowsディレクトリ内の1000を超えるファイルの名前を変更するためにPythonを使用しようとしています:

The.Woman.In.Black.2012.720p.BluRay.x264

望ましい命名規則は次のとおりです。 The Woman In Black {2012}

元の名前から必要な重要なものは、タイトルと日付だけです....

文字列操作のさまざまなバリエーションを使用してみましたが、どこにも行きません。始めるにあたって助けが必要です。

os モジュールを使用してファイルの名前を変更する必要があることは理解していますが、このタスクを実行するにはどのような手順を試して使用すればよいですか?

どんな助けでも大歓迎です。ありがとう。

4

4 に答える 4

3
filename = 'The.Woman.In.Black.2012.720p.BluRay.x264'

# using regular expressions
import re
title, year = re.match('(.*?)\.(\d{4})\.720p\.BluRay\.x264', filename).groups()

# simpler regular expression, matching any format specifiers
title, year = re.match('(.+)\.(\d{4})\.', filename).groups()

# using simple string manipulation if the suffix is always the same
title, year = filename[:-22], filename[-21:-17]

# normalize title
title = title.replace('.', ' ')

# build new filename
print('%s {%s}' % (title, year)) # The Woman In Black {2012}

ファイルの名前を変更するには、os.rename;を使用します。ディレクトリを反復処理するには、glob.globまたはを使用しますos.walk

于 2013-01-02T01:52:26.397 に答える
1

タイトルの一般的な形式は次のようです。

name.name.name.name.name.date.resolution.format.codec

その場合、私はこれを行います(テストされていません):

import os

TARGET_DIR = r'/path/to/movies/'

for old_title in os.listdir(TARGET_DIR + '*'):
    words = old_title.split('.')
    date = words[-4]
    name = ' '.join(words[:-4])
    new_title = '%s {%s}' % (name, date)
    old_title = os.path.join(TARGET_DIR, old_title)
    new_title = os.path.join(TARGET_DIR, new_title)
    os.rename(old_title, new_title)
于 2013-01-02T05:20:25.600 に答える
0
def change_filename(name):
    filename = name.split('.')
    wordlist = filename[:-4]
    extension = '.' + filename[-1]
    wordlist[-1] = '{' + wordlist[-1] + '}'
    os.rename(name, ' '.join(wordlist) + extension)

この関数はあなたが望むことを正確に実行するはずです、あなたはそれに名前を与える必要があります。

注:ファイル名にファイル拡張子を追加することをお勧めします。そうしないと、すべてが不安定になる可能性があります。

これを同じファイルで複数回実行すると、ファイルが中かっこでオーバーロードされ、それが不要になるため、反転関数を次に示します。

def filename_cleanup(name):
    filename = name.replace('{', '').replace('}', '')
    wordlist = filename.split(' ')
    extension = '.' + wordlist.pop()
    wordlist[-1] = '{' + wordlist[-1] + '}'
    os.rename(name, ' '.join(wordlist) + extension)

これで、適切なファイル名が再び得られるはずです。

于 2013-01-02T01:43:02.370 に答える
0

元の命名規則が一貫している場合は、元のファイル名文字列を「.」で分割できます。文字を入力し、有効な年を探し、中かっこを追加して、前のすべてのトークンと結合して新しい名前を形成します

Python を使用してファイルの名前を変更する方法については、この質問を参照してください。

于 2013-01-02T01:28:14.230 に答える