2013-07-27 59 views
6

Tôi có một tệp mà tôi muốn sao chép vào một thư mục nhiều lần. Nó có thể là 100, nó có thể là 1000. Đó là một biến.Python - sao chép một tệp

tôi đến với điều này:

import shutil 

count = 0 
while (count < 100): 
    shutil.copy2('/Users/bubble/Desktop/script.py', '/Users/bubble/Desktop/pics') 
    count = count + 1 

Nó đặt 1 bản sao của tập tin trong thư mục, nhưng chỉ có 1 file. Tôi đoán là nó không tự động thêm một 2,3,4,5 vv vào cuối của tập tin như nó sẽ nếu bạn đang sao chép và dán.

Bất kỳ ý tưởng nào về cách thực hiện việc này?

Trân trọng.

+0

Bạn không thay đổi tên tệp để nó bị ghi đè. – zhangyangyu

Trả lời

7

Sử dụng str.format:

import shutil 

for i in range(100): 
    shutil.copy2('/Users/bubble/Desktop/script.py', '/Users/bubble/Desktop/pics/script{}.py'.format(i)) 

Để làm cho nó trở nên hữu dụng hơn, người ta có thể thêm sự xác định định dạng {:03d} (số 3 chữ số, ví dụ: 001, 002, vv) hoặc {:04d} (4 chữ số, ví dụ: 0001 , 0002 vv) theo nhu cầu của họ theo đề xuất của @Roland Smith.

+0

Điều đó đã làm các trick. Hoàn hảo. Cảm ơn flasetru – BubbleMonster

+1

Bạn có thể muốn sử dụng trình định dạng định dạng '{: 03d}'. Bằng cách đó các tập tin sẽ được liệt kê theo thứ tự đúng. –

+0

Cảm ơn Roland. Tôi sẽ kiểm tra điều đó ngay bây giờ. – BubbleMonster