Jawaban:
Gunakan os.rename:
import os
os.rename('a.txt', 'b.kml')
C:/folder/file.txtpada Windows atau /home/file.txtpada Linux / MacOS).
OSErrorpada sistem Windows. os.path.existsharus digunakan untuk memeriksa apakah target ada sebelum mengganti nama. Ini memang membuat bug "Waktu Periksa untuk Penggunaan Saat", tetapi itu tidak menyebabkan masalah. (Saya tahu tidak ada jalan mudah untuk ini - lihat di sini .
os.replace
File mungkin ada di dalam direktori, dalam hal ini tentukan path:
import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
import shutil
shutil.move('a.txt', 'b.kml')
Ini akan berfungsi untuk mengganti nama atau memindahkan file.
shutil.movebukan pilihan yang baik karena tidak menjadi operasi atom. Jika file terbuka, misalnya, shutil.moveakan membuat file dengan new_name, tetapi tidak akan menghapus file old_namesehingga meninggalkan Anda dengan dua file. os.renamedi sisi lain tidak akan melakukan apa-apa, yang merupakan pilihan yang lebih baik . Dengan shutil.move, bahkan jika Anda menemukan kesalahan, Anda masih harus khawatir tentang memeriksa dan menghapus file jahat. Hanya tidak sepadan ketika alat yang lebih baik ada:os.rename .
Pada Python 3.4 orang dapat menggunakan modul pathlib untuk menyelesaikan ini.
Jika Anda menggunakan versi yang lebih lama, Anda dapat menggunakan versi yang di-backport yang ada di sini
Mari kita asumsikan Anda tidak berada di jalur root (hanya untuk menambahkan sedikit kesulitan), Anda ingin mengganti nama, dan harus memberikan path lengkap, kita dapat melihat ini:
some_path = 'a/b/c/the_file.extension'
Jadi, Anda bisa mengambil jalan Anda dan membuat Pathobjek dari itu:
from pathlib import Path
p = Path(some_path)
Hanya untuk memberikan beberapa informasi di sekitar objek yang kita miliki sekarang, kita dapat mengekstraknya. Misalnya, jika karena alasan apa pun kami ingin mengganti nama file dengan memodifikasi nama file dari the_filemenjadi the_file_1, maka kami bisa mendapatkan bagian nama file:
name_without_extension = p.stem
Dan masih memegang ekstensi di tangan juga:
ext = p.suffix
Kita dapat melakukan modifikasi dengan manipulasi string sederhana:
Python 3.6 dan yang lebih besar menggunakan f-string!
new_file_name = f"{name_without_extension}_1"
Jika tidak:
new_file_name = "{}_{}".format(name_without_extension, 1)
Dan sekarang kita dapat melakukan rename dengan memanggil renamemetode pada objek path yang kita buat dan menambahkan extuntuk melengkapi struktur rename yang kita inginkan:
p.rename(Path(p.parent, new_file_name + ext))
Lebih singkat untuk menunjukkan kesederhanaannya:
Python 3.6+:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
Versi yang kurang dari Python 3.6 menggunakan metode format string sebagai gantinya:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
pathlibperpustakaan diperkenalkan dengan python 3.4 sehingga berbagi jawaban di sini juga menyediakan paparan untuk modul yang solid untuk menunjukkan fleksibilitas dan penggunaannya untuk persyaratan yang lebih rumit.
{}Adalah untuk pemformatan string, yang dapat Anda baca di sini . Pada akhirnya, apa yang terjadi adalah bahwa {}diganti dengan variabel yang diteruskan ke formatmetode. Jadi yang pertama {}akan memegang apa yang ada di dalam name_without_extension, dan yang kedua akan memegang argumen kedua yang sederhana 1.
os.rename(old, new)
Ini ditemukan dalam dokumen Python: http://docs.python.org/library/os.html
Gunakan os.rename. Tetapi Anda harus melewati path lengkap dari kedua file ke fungsi. Jika saya memiliki file a.txtdi desktop saya maka saya akan melakukannya dan juga saya harus memberikan file yang penuh nama juga.
os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
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)
chdir()ke direktori, mis. Apa yang terjadi di bawah Windows ketika UNC? Dan melakukan chdir()efek samping. Saya lebih suka hanya menentukan jalur yang diperlukan untuk os.rename()langsung, tidak ada chdir().
Anda dapat menggunakan os.system untuk memanggil terminal untuk menyelesaikan tugas:
os.system('mv oldfile newfile')
mvunix seperti program commandline unix builtin untuk memindahkan / mengganti nama file.
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)
os.pathdengan modern pathlibcukup meragukan. Pergilah dengan pathlibsebaliknya.
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")
Ini harus dilakukan. python 3+