Điểm:0

Làm cách nào để 'chính xác' tạo lời nhắc tập lệnh python sắp xếp lại tệp này cho đầu vào của người dùng, kiểm tra tính hợp lệ và sau đó kiểm tra lại?

lá cờ vn

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:

  1. 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?

  2. 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ì?

  3. 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()

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.