Как переименовать несколько файлов в Python - PullRequest
0 голосов
/ 01 июля 2019

Я новичок в Python, и мне нужно сделать скрипт, который переименовывает имена файлов.

Мои файлы в формате Имя Фамилия, но они мне нужны в Фамилия Имя

У меня есть такие файлы:

C:/Test/Smith John
C:/Test/Jones Fred
C:/Test/Jack Martin Ben 

и они мне нужны вот так:

C:/Test/John Smith 
C:/Test/Fred Jones 
C:/Test/Ben Jack Martin

Я пробовал несколько вещей с os.rename, но я действительно не могу заставить его работать.

Спасибо за помощь заранее.

Ответы [ 4 ]

2 голосов
/ 01 июля 2019
  1. Разбить имя файла на последний пробел, используя rsplit (при условии, что фамилия - это одно слово)
  2. Обратный ход и воссоединение, чтобы получить <name> <lastname>
  3. Перестройте новое имя файла и переименуйте файл.

Также используйте пакет pathlib для файловых операций.

from pathlib import Path

if __name__ == '__main__':
    source_dir = Path('C:/Test')
    for file in source_dir.glob('**/*'):
        if file.is_dir():
            continue
        name_parts = file.stem.rsplit(maxsplit=1)
        name_reversed = ' '.join(name_parts[::-1])
        new_path = file.with_name(name_reversed + file.suffix)
        # check the result
        print(file, new_path)
        # rename
        # file.rename(new_path)


0 голосов
/ 03 июля 2019

Попробуйте это: вы можете изменить имя файла, выполнив поиск по определенной строке и стравливая имя файла.

path = "C:/Test/"
entries = os.listdir(path)
   for entry in entries:
       old_filename = re.search('(.+?)$', entry).group(1)
       new_filename = ' '.join(old_str.split()[-1::-1])
       modified_path = path+new_filename
       print(modified_path)

O / P:

C:/Test/John Smith 
C:/Test/Fred Jones 
C:/Test/Ben Jack Martin
0 голосов
/ 01 июля 2019
import os

# change working directory to the (C:/Test/)
os.chdir(“C:/Test/“)
os.rename(“Smith John”, “John Smith”)
os.rename(“Jones Fred”, “Fred Jones” )
os.rename(“Jack Martin Ben”, “Ben Jack Martin”)
0 голосов
/ 01 июля 2019

Попробуйте это,

import os
path = "C:/Test/Smith John"
os.rename(re.search('Test\/(.+?)$', path).group(1), v.split(' ')[1]+" "+v.split(' ')[0])
...