Tôi có một phiên bản sửa đổi này kịch bản thực sự tuyệt vời đã được viết vào nửa thập kỷ trước để sắp xếp lại các thư mục thực sự lớn chứa đầy các tệp ngẫu nhiên vào các thư mục tương ứng của chúng. Các sửa đổi của tôi không liên quan đến câu hỏi, vì vậy tôi sẽ sử dụng tập lệnh gốc trong ví dụ bên dưới.
Tôi đã đặt nó để nhắc người dùng nhập thay vì mã hóa cứng các biến vào tập lệnh (hiển thị bên dưới ở giữa CHỈNH SỬA HIỆN TẠI CỦA TÔI
comments) và điều đó dường như hoạt động đủ tốt, nhưng tôi lo lắng rằng cuối cùng nó có thể vô tình ăn toàn bộ thư mục mà tôi không định để nó hoạt động, nếu tôi mắc lỗi.
câu hỏi:
Có cách nào để tôi có thể nhắc người dùng về reorg_dir
theo cách nó cho phép người dùng cuộn qua các thư mục, chọn một thư mục và sau đó kiểm tra kỹ để đảm bảo rằng người dùng hài lòng với những gì sẽ xảy ra?
Tương tự như vậy, có một phương tiện nào mà người ta có thể được nhắc loại trừ một số loại tệp, nếu không thì nó không loại trừ gì?
Tiếp tục thì sao remove_emptyfolders
, giả sử khác Thật
?
(Câu hỏi 1 là câu hỏi quan trọng nhất. Tôi không mong đợi bạn giải quyết toàn bộ vấn đề cho những người còn lại nếu bạn không cảm thấy có tham vọng!)
#!/usr/bin/env python3
nhập hệ điều hành
quy trình con nhập khẩu
đóng cửa nhập khẩu
# --------------------------------------------- -------
reorg_dir = "/path/to/directory_to_reorganize"
loại trừ = (".jpg") # chẳng hạn
remove_emptyfolders = Đúng
# --------------------------------------------- --------
# CHỈNH SỬA HIỆN TẠI CỦA TÔI ---------------------------------------
trong khi Đúng:
dirReorg= input("Bạn muốn sắp xếp thư mục nào theo loại tệp?")
nếu không phải os.path.exists(dirReorg):
print("Đường dẫn đó không tồn tại. Hãy thử lại!")
tiếp tục
nghỉ
reorg_dir = os.path.abspath(dirReorg)
# end CÁC CHỈNH SỬA HIỆN TẠI CỦA TÔI -----------------------------------
đối với thư mục gốc, thư mục, tệp trong os.walk(reorg_dir):
cho tên trong các tập tin:
chủ đề = root+"/"+tên
nếu name.startswith(".."):
tiện ích mở rộng = ".hidden_files"
dấu chấm phẩy không phải "." trong tên:
phần mở rộng = ".không có phần mở rộng"
khác:
phần mở rộng = name[name.rfind(".."):]
nếu không mở rộng trong loại trừ:
new_dir = reorg_dir+"/"+extension[1:]
nếu không phải os.path.exists(new_dir):
os.mkdir(new_dir)
Shutil.move(subject, new_dir+"/"+name)
dọn dẹp def():
danh sách tập tin = []
đối với thư mục gốc, thư mục, tệp trong os.walk(reorg_dir):
cho tên trong các tập tin:
filelist.append(root+"/"+name)
thư mục = [item[0] cho mục trong os.walk(reorg_dir)]
cho dr trong các thư mục:
phù hợp = [mục cho mục trong danh sách tệp nếu dr trong mục]
nếu len(khớp) == 0:
cố gắng:
Shutil.rmtree(dr)
ngoại trừ FileNotFoundError:
vượt qua
nếu remove_emptyfolders == Đúng:
dọn dẹp()