Mengganti nama seperti itu cukup mudah, misalnya dengan modul os dan glob :
import glob, os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
Anda kemudian dapat menggunakannya dalam contoh Anda seperti ini:
rename(r'c:\temp\xx', r'*.doc', r'new(%s)')
Contoh di atas akan mengonversi semua *.doc
file dalam c:\temp\xx
dir ke new(%s).doc
, di mana %s
nama dasar file sebelumnya (tanpa ekstensi).
%
simbol digunakan dalam perintahos.path.join(dir, titlePattern % title + ext)
? Saya tahu%
ini untuk operasi modulo dan juga digunakan sebagai operator format. Tapi biasanya diikuti dengans
atauf
untuk menentukan format. Mengapa tidak ada (spasi) segera setelah%
dalam perintah tersebut?Saya lebih suka menulis satu baris kecil untuk setiap penggantian yang harus saya lakukan daripada membuat kode yang lebih umum dan kompleks. Misalnya:
Ini menggantikan semua garis bawah dengan tanda hubung di file yang tidak tersembunyi di direktori saat ini
sumber
rename
:(no such file error
ingatos.rename
perlu jalur penuhJika Anda tidak keberatan menggunakan ekspresi reguler, maka fungsi ini akan memberi Anda banyak kekuatan dalam mengganti nama file:
Jadi dalam contoh Anda, Anda dapat melakukannya (dengan asumsi itu adalah direktori saat ini di mana file tersebut berada):
tetapi Anda juga dapat memutar kembali ke nama file awal:
dan lainnya.
sumber
Saya memiliki ini untuk hanya mengganti nama semua file di subfolder folder
Saya mengganti semua kejadian old_str dengan kasus apapun dengan new_str.
sumber
Coba: http://www.mattweber.org/2007/03/04/python-script-renamepy/
Kode sumber program juga tersedia.
sumber
Saya telah menulis skrip python sendiri. Argumen ini mengambil jalur direktori tempat file berada dan pola penamaan yang ingin Anda gunakan. Namun, itu mengganti nama dengan melampirkan nomor tambahan (1, 2, 3 dan seterusnya) ke pola penamaan yang Anda berikan.
Semoga ini berhasil untuk Anda.
sumber
sumber
os.chdir(path_of_directory)
sumber
Saya memiliki masalah serupa, tetapi saya ingin menambahkan teks ke awal nama file dari semua file dalam sebuah direktori dan menggunakan metode serupa. Lihat contoh di bawah ini:
sumber
bagi saya di direktori saya, saya memiliki banyak subdir, setiap subdir memiliki banyak gambar, saya ingin mengubah semua gambar subdir menjadi 1.jpg ~ n.jpg
(jawaban saya sendiri) https://stackoverflow.com/a/45734381/6329006
sumber
sumber
Jika Anda ingin mengubah nama file dalam editor (seperti vim), perpustakaan klik dilengkapi dengan perintah
click.edit()
, yang dapat digunakan untuk menerima masukan pengguna dari editor. Berikut adalah contoh bagaimana ini dapat digunakan untuk memfaktor ulang file dalam direktori.Saya menulis aplikasi baris perintah yang menggunakan teknik yang sama, tetapi itu mengurangi volatilitas skrip ini, dan hadir dengan lebih banyak opsi, seperti pemfaktoran ulang rekursif. Ini adalah tautan ke halaman github . Ini berguna jika Anda menyukai aplikasi baris perintah, dan tertarik untuk membuat beberapa pengeditan cepat pada nama file. (Aplikasi saya mirip dengan perintah "bulkrename" yang ditemukan di ranger ).
sumber
Kode ini akan berfungsi
Fungsi tersebut secara tepat mengambil dua argumen f_patth sebagai jalur Anda untuk mengganti nama file dan nama_baru sebagai nama baru Anda ke file.
sumber