Hướng dẫn rename files in multiple folders python - đổi tên tệp trong nhiều thư mục python

Tôi có nhiều thư mục với hình ảnh, với cấu trúc thư mục sau, có tệp tôi muốn đổi tên.

Cha mẹ dir

Thư mục 1

xyz.jpg abc.png ...

Thư mục 2

def.jpg xdd.png ...

rename.py

## rename.py
import os

## Function to rename
def main():
    folders = ["Folder_1", "Folder_2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            if folder_name == "Folder_1":
                dst = f"Folder_1 {str(count)}.jpg"
                src = f"{folder_name}/{filename}"
                dst = f"{folder_name}/{dst}"
            elif folder_name == "Folder_2":
                dst = f"Folder_2 {str(count)}.jpg"
                src = f"{folder_name}/{filename}"
                dst = f"{folder_name}/{dst}"

            os.rename(src, dst)

if __name__ == '__main__':
    main()

Tuy nhiên hai vấn đề xuất hiện:

  1. Làm thế nào tôi có thể chứa cho 'PNG'?
  2. Khi mã được chạy chỉ có thư mục 2 bị thay đổi.

Noobing điều này thông qua và sẽ đánh giá cao sự giúp đỡ của bạn.

hỏi ngày 9 tháng 7 lúc 6:21Jul 9 at 6:21

Hướng dẫn rename files in multiple folders python - đổi tên tệp trong nhiều thư mục python

Bạn có thể sử dụng chức năng của os.path để trích xuất tiện ích mở rộng tệp và sử dụng nó để đổi tên tệp của bạn. Tôi đã tạo lại các thư mục của bạn với hình ảnh .png.jpg và chạy mã của bạn, cả Furder1 và Furder2 đều hoạt động. Phải có một lỗi đánh máy hoặc một cái gì đó khác gây ra vấn đề.

Đây là chức năng bạn có thể sử dụng thay thế:

## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()

Đã trả lời ngày 9 tháng 7 lúc 9:05Jul 9 at 9:05

Hướng dẫn rename files in multiple folders python - đổi tên tệp trong nhiều thư mục python

RabinzelrabinzelRabinzel

7.3393 huy hiệu vàng9 Huy hiệu bạc 30 Huy hiệu Đồng3 gold badges9 silver badges30 bronze badges

0

Cải thiện bài viết

Lưu bài viết

Điều kiện tiên quyết: Mô -đun HĐH trong pythonin python3, đổi tên () phương thức được sử dụng để đổi tên tệp hoặc thư mục. Phương pháp này là một phần của mô -đun HĐH và có cực kỳ tiện dụng. & Nbsp; & nbsp; OS module in Python
In Python3, rename() method is used to rename a file or directory. This method is a part of the os module and comes in extremely handy. 
 

Cú pháp cho Os.rename ():

OS.RENAME (SRC, DST): SRC là địa chỉ nguồn của tệp để được đổi tên và DST là điểm đến với tên mới. src is source address of file to be renamed and dst is destination with the new name.

Bây giờ nói cho n hình ảnh trong một thư mục có tên ngẫu nhiên. Ví dụ, hãy xem xét hình ảnh dưới đây:

Hướng dẫn rename files in multiple folders python - đổi tên tệp trong nhiều thư mục python

Bây giờ yêu cầu là đổi tên chúng theo thứ tự thời trang như Hostel1, Hostel2, Mạnh, v.v. Thực hiện điều này theo cách thủ công sẽ là một nhiệm vụ tẻ nhạt nhưng mục tiêu này có thể đạt được bằng cách sử dụng các phương thức đổi tên () và listDIR () trong mô -đun HĐH. & NBSP;
 

Phương thức listDIR liệt kê tất cả nội dung của một thư mục nhất định.listdir method lists out all the content of a given directory.

Cú pháp cho ListDir (): & nbsp; 

Danh sách = OS.ListDir (‘SRC,): Trong đó SRC là thư mục nguồn được liệt kê. where src is the source folder to be listed out.

Mã sau đây sẽ làm công việc cho chúng tôi. Nó đi qua danh sách tất cả các hình ảnh trong thư mục XYZ, xác định địa chỉ đích (DST) và Nguồn (SRC) và đổi tên bằng mô -đun đổi tên. & NBSP;

Định dạng được chấp nhận cho các địa chỉ đích (DST) và nguồn (SRC) được đưa ra dưới dạng đối số trong OS.RENAME (SRC, DST) là thư mục_name/file_name.os.rename(src,dst) is “folder_name/file_name”.
  
Below is the implementation : 

Python3

import os

def main():

    

## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
0____11
## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
2

    

## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
4
## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
5
## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
6
## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
7
## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
8

## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
9os.path0____11 os.path2223

________ 19 ________ 25 ________ 11 ________ 22 ________ 28 & nbsp;

## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
9os.path0
## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
1os.path2.png3

## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
9.png5

.png6 .png7

## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
1
## rename.py
import os

def main():
    folders = ["folder1", "folder2"]
    for folder_name in folders:
        for count, filename in enumerate(os.listdir(folder_name)):
            _, ext = os.path.splitext(os.path.basename(filename))
            newfilename = f"{folder_name} {str(count)}{ext}"
            src = f"{folder_name}/{filename}"
            dst = f"{folder_name}/{newfilename}"
            os.rename(src, dst)

if __name__ == '__main__':
    main()
1 .jpg0.jpg1

    .jpg3

Đầu ra: Đầu ra của mã này sẽ trông giống như thế này - & nbsp; & nbsp;
The output of this code will look something like this – 
 

Hướng dẫn rename files in multiple folders python - đổi tên tệp trong nhiều thư mục python

Lưu ý: Mã này có thể không chạy trong IDE trực tuyến, vì nó sử dụng thư mục tệp hình ảnh bên ngoài. & NBSP; This code may not run in online IDE, since it use external image file directory.