Я хочу изменить a.txt
на b.kml
.
Как переименовать файл с помощью Python
Ответ 1
Используйте os.rename
:
import os
os.rename('a.txt', 'b.kml')
Ответ 2
Файл может находиться внутри каталога, в этом случае указать путь:
import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
Ответ 3
import shutil
shutil.move('a.txt', 'b.kml')
Это будет работать, чтобы переименовать или переместить файл.
Ответ 4
Начиная с 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
Мы можем выполнить нашу модификацию с помощью простой манипуляции со строками:
Python 3.6 и выше используют f-строки!
new_file_name = f"{name_without_extension}_1"
Иначе:
new_file_name = "{}_{}".format(name_without_extension, 1)
И теперь мы можем выполнить наше переименование, вызвав метод rename
для созданного нами объекта пути и добавив ext
, чтобы завершить правильную структуру переименования, которую мы хотим:
p.rename(Path(p.parent, new_file_name + ext))
Короче, чтобы продемонстрировать его простоту:
Python 3. 6+:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
Версии ниже Python 3.6 вместо этого используют метод строкового формата:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
Ответ 5
os.rename(old, new)
Это найдено в документации по Python: http://docs.python.org/library/os.html
Ответ 6
Используйте os.rename
. Но вы должны передать полный путь обоих файлов к функции. Если у меня есть файл a.txt
на рабочем столе, так что я буду делать, а также я должен дать полный переименованный файл тоже.
os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
Ответ 7
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)
Ответ 8
Вы можете использовать os.system для вызова терминала для выполнения задачи:
os.system('mv oldfile newfile')
Ответ 9
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")
это должно это сделать. python 3 +
Ответ 10
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)