Mặc dù có nhiều hướng dẫn về cách đổi tên tệp bằng Python, nhưng hầu hết không đi sâu vào cách tạo logic linh hoạt để điều chỉnh công việc đổi tên tệp hàng loạt đó theo nhu cầu của bạn. Đây là tình huống tôi gặp phải gần đây, một yêu cầu có vẻ đơn giản giúp đổi tên vài trăm tệp trong một thư mục. Tuy nhiên, không phải tất cả việc đổi tên đều theo một khuôn mẫu nhất định. Nó cũng không tuân theo bất kỳ khuôn mẫu thực tế nào, vì vậy việc sử dụng regex có lẽ sẽ không giúp ích gì. Điều này kêu gọi một tập lệnh tùy chỉnh để giúp đỡ một kỹ sư đồng nghiệp
Vấn đề
Vấn đề được đưa ra là trong quá trình tự động hóa, hàng trăm tệp đã được tạo nhưng sử dụng sai tên. Tất cả những thứ này bây giờ đều cần thay đổi. Tên tệp bên trái cần phải giống tên tệp bên phải [đây là một ví dụ nhỏ nhưng có hàng trăm tệp]. Như bạn có thể thấy, đây không phải là công việc tìm và thay thế ngay lập tức, chúng tôi sẽ cần một số logic để khớp cụm từ tìm kiếm với cụm từ thay thế. Ví dụ: nếu tên tệp bao gồm X thì hãy thay thế bằng Y. Để cắt định danh ở đầu tên tệp, chúng tôi sẽ sử dụng cắt chuỗi
Dung dịch
Tập lệnh này sử dụng mô-đun os. Chúng tôi cung cấp một đường dẫn thư mục và sau đó lặp qua tất cả các tệp trong đó, đổi tên bằng các thay thế trong đó tên tệp chứa cụm từ tìm kiếm
đổi tên. py ______0
Thành công. Tất cả các tệp đã được đổi tên theo logic được áp dụng và hiện có định dạng như ở bên phải của hình ảnh được hiển thị trước đó. Logic này cũng sẽ đổi tên bất kỳ thư mục con nào trong thư mục nếu bạn muốn đổi tên thư mục thay vì tệp. Trong tập lệnh này, tôi cũng đã tách tệp name
khỏi tệp extension
, vì vậy nếu bạn muốn thay đổi hàng trăm tệp txt sang định dạng csv, bạn có thể thực hiện điều đó chỉ với một lần thay đổi new_name = os.path.join[path, prefix + postfix + ".csv"]
Nếu bạn muốn chạy thử tập lệnh này, hãy tải xuống thư mục kiểm tra, sau đó giải nén nội dung và đặt thư mục 'TestFolder' vào thư mục Tài liệu của bạn để đảm bảo thư mục đó có tên 'TestFolder'. Sau đó cập nhật đường dẫn cho hàm rename_files
với tên người dùng của bạn trước khi chạy 😄
Thưởng. Đổi tên hàng loạt đệ quy
Bạn có thể đang nghĩ, nhưng nếu tôi có các tệp trong các thư mục trong các thư mục thì sao? . Giả sử chúng ta có các thư mục A, B và C trong thư mục TestFolder
Bây giờ hãy xem hàm đệ quy mà chúng ta sẽ chạy trên đường dẫn thư mục TestFolder
recursive-renamemer. py ______1
Bây giờ chúng ta có thể thấy mọi tệp trong mọi thư mục con được đổi tên trong một thao tác. Điều này cũng sẽ hoạt động với mọi độ sâu của cây thư mục. thư mục con trong thư mục con trong thư mục con. mọi thứ. Không phải là đệ quy tuyệt vời?
Thích nghi với nhu cầu của bạn
Chúng tôi đây rồi, hai chức năng có thể mở rộng và có thể thích ứng ngắn cung cấp cho chúng tôi mọi thứ chúng tôi cần để hoàn thành công việc. Đồng nghiệp của tôi chắc chắn rất hài lòng với kết quả này, họ nói rằng nó hoạt động như một giấc mơ. Bạn có thể dễ dàng điều chỉnh các chức năng này theo nhu cầu của riêng mình bằng cách thay đổi hoặc thêm vào logic điều kiện trong vòng lặp bên trong xử lý từng tên tệp. Tập lệnh này không chỉ áp dụng cho việc đổi tên tệp có điều kiện mà còn xóa tệp có điều kiện. Bạn có thể sử dụng os.remove[file_path]
thay vì os.rename[file_path, new_name]
chúng tôi đã sử dụng
Cảm ơn rất nhiều vì đã đọc, đây là một bài viết rất ngắn về cách đổi tên hàng loạt tệp trong thư mục một cách hiệu quả bằng Python. Nếu bạn thích bài viết này, hãy nhớ xem các bài viết khác trên trang web. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại nhận xét 👍 Chúc một ngày tốt lành