2011-10-25 32 views
5

Tôi có một thư mục nhạc có các thư mục album cũng như các bài hát riêng lẻ ở mỗi cấp. Làm thế nào tôi có thể duyệt qua tất cả các tệp này cũng được mã hóa ở các định dạng khác nhau (mp3, wav, v.v.)? Ngoài ra là có một cách tôi có thể đổi tên chúng thành một định dạng phù hợp hơn với ý thích của tôi bằng cách sử dụng các biểu thức thông thường?Làm thế nào để lặp qua các tập tin và đổi tên chúng trong Python

Cảm ơn

+0

Tôi thường tính tiền để mã hóa một cái gì đó như thế. Đây là một cái gì đó tương tự như tôi đã viết trong perl, bạn có thể ít nhất là nhìn thấy ý tưởng thô: https://github.com/eberle1080/oggsync –

+0

@ Chris: ouch, 300 dòng Perl để đi qua và đổi tên tập tin? –

+0

Không, 300 dòng để chuyển mã từ định dạng này sang định dạng khác. Đây không phải là những gì OP sau? –

Trả lời

7
  • os.walk để đi qua các tập tin trong thư mục và thư mục con của nó, đệ quy
  • os.rename để đổi tên họ

Mã hóa các tập tin trả không có vai trò ở đây, tôi suy nghĩ. Bạn có thể, tất nhiên, phát hiện phần mở rộng của họ (sử dụng os.path.splitext cho điều đó) và làm một cái gì đó dựa trên nó, nhưng miễn là bạn chỉ cần đổi tên các tập tin (tức là thao tác tên của họ), nội dung hầu như không quan trọng.

1

Tôi sử dụng đoạn mã này trong chương trình tôi đã viết. Tôi sử dụng nó để có được một danh sách đệ quy của các tập tin hình ảnh, mẫu gọi là một cái gì đó giống như re.compile(r'\.(bmp|jpg|png)$', re.IGNORECASE). Tôi nghĩ rằng bạn có được ý tưởng.

def getFiles(dirname, suffixPattern=None): 
     dirname=os.path.normpath(dirname) 

     retDirs, retFiles=[], [] 
     for root, dirs, files in os.walk(dirname): 
       for i in dirs: 
         retDirs.append(os.path.join(root, i)) 
       for i in files: 
         if suffixPattern is None or \ 
          suffixPattern.search(i) is not None: 
           retFiles.append((root, i)) 

     return (retDirs, retFiles) 

Sau khi bạn có danh sách, sẽ dễ áp ​​dụng quy tắc đổi tên. os.rename là bạn của bạn, xem http://docs.python.org/library/os.html.

Các vấn đề liên quan