2009-03-13 40 views
5

Tôi có một thư mục chứa đầy đủ các tệp, một số tệp có ký hiệu và tên của chúng. Tôi muốn đổi tên tất cả các tệp bằng ký hiệu và thay thế từng ký hiệu bằng dấu cộng (+). Tôi đang làm việc với khoảng 10k tệp. Điều gì sẽ là phương pháp tốt nhất để làm điều này?Đổi tên tệp, Python/Jython

+0

Có một thư mục phẳng của 10K file, hoặc một cây thư mục với thư mục con? –

Trả lời

13
import glob, os 
for filename in glob.glob(os.path.join(yourPath, "*&*")): 
    os.rename(filename, filename.replace('&','+')) 
+1

iglob sẽ phù hợp hơn ở đây – SilentGhost

+0

Tự do thay đổi chuỗi nối vào một cuộc gọi os.path.join(), để rõ ràng và tính di động. – unwind

+0

@SilentGhost - điểm tốt, được cập nhật. @unwind - đúng, tôi đoán là UNIX là trung tâm. – vartec

2
import os 
directory = '.' 
for file in os.listdir(directory): 
    if '&' in file : 
     os.rename(file, file.replace('&', '+')) 

Thay directory với con đường riêng của mình.

7

Nếu bạn có thư mục con:

import os 
for dirpath, dirs, files in os.walk(your_path): 
    for filename in files: 
     if '&' in filename: 
      os.rename(
       os.path.join(dirpath, filename), 
       os.path.join(dirpath, filename.replace('&', '+')) 
      ) 
+0

Điểm trong việc hiểu danh sách trong trường hợp này là gì? Một vòng lặp đơn giản sẽ đủ. – jfs

+0

Có phải có điểm không? Tôi cũng có thể sử dụng một vòng lặp ở đây, nhưng cú pháp nếu sau đó có vẻ đẹp hơn một chút, bạn có nghĩ vậy không? –

+0

Danh sách 10K không có lý do chính là điểm. Định dạng như vậy có thể dẫn đến lỗi, ví dụ: xem dấu phẩy gần ''+')),'. – jfs

0

sử dụng rename:

$ rename --find '&' --replace '+' *