2016-05-26 32 views
7

Tôi đang cố gắng để đổi tên nhiều file trong một thư mục sử dụng kịch bản Python này:Đổi tên nhiều file trong một thư mục sử dụng Python

import os 
path = '/Users/myName/Desktop/directory' 
files = os.listdir(path) 
i = 1 

for file in files: 
    os.rename(file, str(i)+'.jpg') 
    i = i+1 

Khi tôi chạy kịch bản này, tôi nhận được lỗi sau:

Traceback (most recent call last): 
    File "rename.py", line 7, in <module> 
    os.rename(file, str(i)+'.jpg') 
OSError: [Errno 2] No such file or directory 

Tại sao lại như vậy? Làm thế nào tôi có thể giải quyết vấn đề này?

Cảm ơn.

+0

Bạn phải chỉ rõ toàn bộ con đường. –

+0

Danh sách 'tệp' của bạn sẽ chứa tất cả các tệp trong' đường dẫn' đã cho, nhưng khi bạn thực hiện 'os.rename()', nó sẽ tìm một tệp trong thư mục làm việc hiện tại. –

+1

'os.listdir()' chỉ trả lại tên tệp chứ không phải đường dẫn đầy đủ của tệp. Sử dụng 'os.path.join (đường dẫn, tệp)' để lấy đường dẫn đầy đủ và đổi tên nó. – danielunderwood

Trả lời

20

Bạn chưa đưa ra toàn bộ con đường khi đổi tên, làm điều đó như thế này:

import os 
path = '/Users/myName/Desktop/directory' 
files = os.listdir(path) 
i = 1 

for file in files: 
    os.rename(os.path.join(path, file), os.path.join(path, str(i)+'.jpg')) 
    i = i+1 

Sửa: Nhờ Tavo, Giải pháp đầu tiên sẽ di chuyển các tập tin vào thư mục hiện, cố định đó.

+1

Lưu ý rằng điều này cũng sẽ chuyển tệp vào thư mục hiện tại. Để tránh điều đó, hãy thực hiện 'os.rename (os.path.join (đường dẫn, tệp), os.path.join (đường dẫn, str (i) + '. Jpg'))' thay thế. – tavo

2

Trước tiên, bạn phải đặt đường dẫn này làm thư mục hoạt động hiện tại. đủ đơn giản. phần còn lại của mã không có lỗi.

để làm cho nó thư mục làm việc hiện tại:

os.chdir(path) 
Các vấn đề liên quan