Как переименовать файл с помощью Python - PullRequest
263 голосов
/ 22 марта 2010

Я хочу изменить a.txt на b.kml.

Ответы [ 10 ]

461 голосов
/ 22 марта 2010

Использование os.rename:

import os

os.rename('a.txt', 'b.kml')
50 голосов
/ 15 октября 2015

Файл может находиться внутри каталога, в этом случае указать путь:

import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
43 голосов
/ 22 марта 2010
import shutil

shutil.move('a.txt', 'b.kml')

Это будет работать для переименования или перемещения файла.

16 голосов
/ 27 июля 2017

Начиная с Python 3.4 для решения этой проблемы можно использовать модуль pathlib .

Если вы используете более старую версию, вы можете использовать найденную версию с бэкпортом здесь

Давайте предположим, что вы не находитесь в корневом пути (просто чтобы добавить к нему немного сложности), вы хотите переименовать и должны предоставить полный путь, мы можем посмотреть на это:

some_path = 'a/b/c/the_file.extension'

Итак, вы можете взять свой путь и создать из него Path объект:

from pathlib import Path
p = Path(some_path)

Просто, чтобы предоставить некоторую информацию об этом объекте, который у нас есть сейчас, мы можем извлечь из него вещи. Например, если по какой-либо причине мы хотим переименовать файл, изменив имя файла с the_file на the_file_1, то мы можем получить часть имени файла:

name_without_extension = p.stem

И еще держите удлинитель в руке:

ext = p.suffix

Мы можем выполнить нашу модификацию с помощью простой манипуляции со строками:

new_file_name = "{}_{}".format(name_without_extension, 1)

И теперь мы можем выполнить наше переименование, вызвав метод rename для созданного нами объекта пути и добавив ext, чтобы завершить правильную структуру переименования, которую мы хотим:

p.rename(Path(p.parent, new_file_name + ext))

Короче, чтобы продемонстрировать свою простоту:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.suffix))
15 голосов
/ 22 марта 2010

os.rename(old, new)

Это можно найти в документации по Python: http://docs.python.org/library/os.html

5 голосов
/ 08 декабря 2017

Используйте os.rename.Но вы должны передать полный путь обоих файлов к функции.Если у меня есть файл a.txt на моем рабочем столе, так что я буду делать, а также я должен дать полный переименованный файл тоже.

3 голосов
/ 02 апреля 2018
import os

# Set the path
path = 'a\\b\\c'  
# save current working directory
saved_cwd = os.getcwd()
# change your cwd to the directory which contains files
os.chdir(path)
os.rename('a.txt', 'b.klm')
# moving back to the directory you were in 
os.chdir(saved_cwd)
1 голос
/ 11 января 2016

Вы можете использовать os.system для вызова терминала для выполнения задачи:

os.system('mv oldfile newfile')
0 голосов
/ 31 мая 2018
    import os
import re
from pathlib import Path

for f in os.listdir(training_data_dir2):
  for file in os.listdir( training_data_dir2 + '/' + f):
    oldfile= Path(training_data_dir2 + '/' + f + '/' + file)
    newfile = Path(training_data_dir2 + '/' + f + '/' + file[49:])
    p=oldfile
    p.rename(newfile)
0 голосов
/ 30 сентября 2017
import shutil
import os

files = os.listdir("./pics/") 

for key in range(0, len(files)):
 print files[key]
 shutil.move("./pics/" + files[key],"./pics/img" + str(key) + ".jpeg")

это должно сделать это. питон 3 +

...