Saya ingin berubah a.txt
menjadi b.kml
.
python
file-rename
zjm1126
sumber
sumber
C:/folder/file.txt
pada Windows atau/home/file.txt
pada Linux / MacOS).OSError
pada sistem Windows.os.path.exists
harus 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:
sumber
Ini akan berfungsi untuk mengganti nama atau memindahkan file.
sumber
shutil.move
bukan pilihan yang baik karena tidak menjadi operasi atom. Jika file terbuka, misalnya,shutil.move
akan membuat file dengannew_name
, tetapi tidak akan menghapus fileold_name
sehingga meninggalkan Anda dengan dua file.os.rename
di sisi lain tidak akan melakukan apa-apa, yang merupakan pilihan yang lebih baik . Denganshutil.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:
Jadi, Anda bisa mengambil jalan Anda dan membuat
Path
objek dari itu: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_file
menjadithe_file_1
, maka kami bisa mendapatkan bagian nama file:Dan masih memegang ekstensi di tangan juga:
Kita dapat melakukan modifikasi dengan manipulasi string sederhana:
Python 3.6 dan yang lebih besar menggunakan f-string!
Jika tidak:
Dan sekarang kita dapat melakukan rename dengan memanggil
rename
metode pada objek path yang kita buat dan menambahkanext
untuk melengkapi struktur rename yang kita inginkan:Lebih singkat untuk menunjukkan kesederhanaannya:
Python 3.6+:
Versi yang kurang dari Python 3.6 menggunakan metode format string sebagai gantinya:
sumber
pathlib
perpustakaan 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 keformat
metode. Jadi yang pertama{}
akan memegang apa yang ada di dalamname_without_extension
, dan yang kedua akan memegang argumen kedua yang sederhana1
.os.rename(old, new)
Ini ditemukan dalam dokumen Python: http://docs.python.org/library/os.html
sumber
Gunakan
os.rename
. Tetapi Anda harus melewati path lengkap dari kedua file ke fungsi. Jika saya memiliki filea.txt
di desktop saya maka saya akan melakukannya dan juga saya harus memberikan file yang penuh nama juga.sumber
sumber
chdir()
ke direktori, mis. Apa yang terjadi di bawah Windows ketika UNC? Dan melakukanchdir()
efek samping. Saya lebih suka hanya menentukan jalur yang diperlukan untukos.rename()
langsung, tidak adachdir()
.Anda dapat menggunakan os.system untuk memanggil terminal untuk menyelesaikan tugas:
sumber
mv
unix seperti program commandline unix builtin untuk memindahkan / mengganti nama file.sumber
os.path
dengan modernpathlib
cukup meragukan. Pergilah denganpathlib
sebaliknya.Ini harus dilakukan. python 3+
sumber