Переименовать несколько файлов в каталоге на Python [дубликаты]

395
задан poke 27 July 2017 в 14:33
поделиться

6 ответов

Используйте os.rename (src, dst) , чтобы переименовать или переместить файл или каталог.

$ ls
cheese_cheese_type.bar  cheese_cheese_type.foo
$ python
>>> import os
>>> for filename in os.listdir("."):
...  if filename.startswith("cheese_"):
...    os.rename(filename, filename[7:])
... 
>>> 
$ ls
cheese_type.bar  cheese_type.foo
633
ответ дан 22 November 2019 в 23:40
поделиться

А как насчет этого:

import re
p = re.compile(r'_')
p.split(filename, 1) #where filename is CHEESE_CHEESE_TYPE.***
0
ответ дан 22 November 2019 в 23:40
поделиться

Вот сценарий, основанный на вашем последнем комментарии.

#!/usr/bin/env python
from os import rename, listdir

badprefix = "cheese_"
fnames = listdir('.')

for fname in fnames:
    if fname.startswith(badprefix*2):
        rename(fname, fname.replace(badprefix, '', 1))
37
ответ дан 22 November 2019 в 23:40
поделиться

Похоже, ваша проблема больше в определении нового имени файла, чем в самом переименовании (для чего вы можете использовать метод os.rename).

Из вашего вопроса неясно, какой шаблон вы хотите переименовать. В манипуляциях со строками нет ничего плохого. Здесь вам может понадобиться регулярное выражение.

4
ответ дан 22 November 2019 в 23:40
поделиться

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

import os
import shutil

for file in os.listdir(dirpath):
    newfile = os.path.join(dirpath, file.split("_",1)[1])
    shutil.move(os.path.join(dirpath,file),newfile)

Я предполагаю, что вы не хотите удалять расширение файла, но вы можете просто сделать то же самое с периодами.

7
ответ дан 22 November 2019 в 23:40
поделиться

Предполагая, что вы уже находитесь в каталоге, и что "первые 8 символов" из вашего комментария всегда верны. (Хотя "CHEESE_" состоит из 7 символов... ? Если это так, измените 8 ниже на 7)

from glob import glob
from os import rename
for fname in glob('*.prj'):
    rename(fname, fname[8:])
15
ответ дан 22 November 2019 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: