Kịch bản: Khi tôi chụp ảnh một đối tượng, tôi chụp nhiều hình ảnh, từ nhiều góc độ. Nhân với số lượng đối tượng Tôi "chụp", tôi có thể tạo ra một số lượng lớn hình ảnh. Vấn đề: Camera tạo ra hình ảnh được xác định là 'DSCN100001', 'DSCN100002 ", v.v. khó hiểu.
Tôi kết hợp một tập lệnh sẽ nhắc nhở đặc tả thư mục [Windows], cũng như "tiền tố". Kịch bản đọc ngày và giờ tạo của tệp và đổi tên tệp cho phù hợp. Tiền tố sẽ được thêm vào mặt trước của tên tệp. Vì vậy, 'DSCN100002.jpg' có thể trở thành "FatMonkey 20110721 17:51:02". Chi tiết thời gian là quan trọng đối với tôi đối với niên đại.
Kịch bản theo sau. Xin vui lòng cho tôi biết liệu đó có phải là Pythonic hay không, liệu nó có được viết kém hay không và tất nhiên, liệu có cách làm sạch hơn - hiệu quả hơn để làm điều này. Cảm ơn bạn.
import os
import datetime
target = raw_input['Enter full directory path: ']
prefix = raw_input['Enter prefix: ']
os.chdir[target]
allfiles = os.listdir[target]
for filename in allfiles:
t = os.path.getmtime[filename]
v = datetime.datetime.fromtimestamp[t]
x = v.strftime['%Y%m%d-%H%M%S']
os.rename[filename, prefix + x +".jpg"]
Đổi tên các tệp dựa trên ngày được tạo của chúng
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều
Nhập khẩu, DateTime os, datetime | |
# Thư mục làm việc | |
directory='./' = './' | |
# Nhận danh sách các tệp trong thư mục | |
filelist = os.listdir [thư mục] = [['.jpg', '.jpeg']]; | |
# Nhận danh sách các tệp trong thư mục | |
filelist = os.listdir [thư mục] = os.listdir[ directory ] | |
# Đếm số lượng tệp được đổi tên | |
# mẫu chuỗi thông thường = {} | |
# Đếm số lượng tệp được đổi tên | |
count=0 = 0 | |
Forfileinfilelist: file in filelist: | |
newfile = 'không đổi tên' | |
# Nếu tên tệp khớp với mẫu được xác định, extension = os.path.splitext[file] | |
if [catplay.match [tệp]]: | |
str_year = file [4: 8] [ extension in extensions ]: | |
str_month = file [8:10] | |
str_day = file [10:12] = os.path.getctime[ file ] | |
str_hour = file [13:15] | |
str_minute = file [15:17] = datetime.datetime.fromtimestamp[ create_time ] | |
STR_SECOND = FILE [17:19] | |
# Tương phản tên mới = format_time.strftime["%Y-%m-%d %H.%M.%S"] # e.g. 2015-01-01 09.00.00.jpg | |
newfile = str_year+'-'+str_month+'-'+str_day+''; | |
newfile+= str_hour+'.'+str_minute+'.'+str_second; = format_time_string + extension; | |
Newfile+= File [19:] | |
# Đổi tên tệp [ newfile in newfilesDictionary.keys[] ]: | |
OS.RENAME [Tệp, Newfile]; = newfilesDictionary[newfile] + 1; | |
# in nhật ký[newfile] = index; | |
in [file.rjust [35] +'=>' +newFile] = format_time_string + '-' + str[index] + extension; # e.g. 2015-01-01 09.00.00-1.jpg | |
in ['tất cả đã hoàn thành.' +str [đếm] +'các tệp được đổi tên.']: | |
Đổi tên các tệp dựa trên ngày được tạo của chúng[newfile] = 0; | |
# Đổi tên tệp | |
OS.RENAME [Tệp, Newfile];.rename[ file, newfile ]; | |
# Đếm số lượng tệp được đổi tên | |
count=count+1 = count + 1 | |
# in nhật ký | |
in [file.rjust [35] +'=>' +newFile][ file.rjust[35] + ' => ' + newfile.ljust[35] ] | |
in ['tất cả đã hoàn thành.' +str [đếm] +'các tệp được đổi tên.'][ 'All done. ' + str[count] + ' files are renamed. '] |
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều
# Thay đổi tất cả các hình ảnh tên tệp từ Google Nexus 5 thành Dropbox Style trong thư mục | |
# Một ví dụ về tên tệp nguồn: | |
# IMG_20141224_204028 [1] .JPG | |
# Tên tệp đích: | |
# 2014-12-24 20,40,28 [1] .jpg | |
# Phát triển trong Python 3 | |
Nhập khẩu, DateTime os, datetime | |
Importre# cho biểu thức chính quy re # For regular expression | |
# Thư mục làm việc | |
directory='./' = './' | |
# Nhận danh sách các tệp trong thư mục | |
filelist = os.listdir [thư mục] = os.listdir[ directory ] | |
# Đếm số lượng tệp được đổi tên | |
count=0 = 0 | |
# mẫu chuỗi thông thường | |
mẫu = re.compile ['img_ \ d {8,8} _ \ d {6,6} [[0-9]]*. jpg'] = re.compile['IMG_\d{8,8}_\d{6,6}[ [0-9]]*.jpg'] | |
Forfileinfilelist: file in filelist: | |
newfile = 'không đổi tên' = 'Not Renamed' | |
# Nếu tên tệp khớp với mẫu được xác định | |
if [catplay.match [tệp]]: [ pattern.match[ file ] ]: | |
str_year = file [4: 8] = file[4:8] | |
str_month = file [8:10] = file[8:10] | |
str_day = file [10:12] = file[10:12] | |
str_hour = file [13:15] = file[13:15] | |
str_minute = file [15:17] = file[15:17] | |
STR_SECOND = FILE [17:19] = file[17:19] | |
# Tương phản tên mới | |
newfile = str_year+'-'+str_month+'-'+str_day+''; = str_year + '-' + str_month + '-' + str_day + ' '; | |
newfile+= str_hour+'.'+str_minute+'.'+str_second; += str_hour + '.' + str_minute + '.' + str_second; | |
Newfile+= File [19:] += file[19:] | |
# Đổi tên tệp | |
OS.RENAME [Tệp, Newfile];.rename[ file, newFile ]; | |
count=count+1 = count + 1 | |
# in nhật ký | |
in [file.rjust [35] +'=>' +newFile][ file.rjust[35] + ' => ' + newFile ] | |
in ['tất cả đã hoàn thành.' +str [đếm] +'các tệp được đổi tên.'][ 'All done. ' + str[count] + ' files are renamed. '] |