Hướng dẫn how do you delete a directory that is not empty in python? - làm thế nào để bạn xóa một thư mục không trống trong python?

Thư viện tiêu chuẩn bao gồm SOWN.RMTREE cho việc này. Theo mặc định,

shutil.rmtree(path)  # errors if dir not empty

sẽ cho OSError: [Errno 66] Directory not empty: .

Bạn có thể xóa thư mục và nội dung của nó bằng cách bỏ qua lỗi:

shutil.rmtree(role_fs_path, ignore_errors=True)

Bạn có thể thực hiện xử lý lỗi tinh vi hơn bằng cách vượt qua onerrror=.

Xây dựng vấn đề:

  • Cho path cho một thư mục dưới dạng chuỗi Python. Thư mục không trống.
  • Làm thế nào để xóa toàn bộ thư mục trong tập lệnh Python của bạn?

Ví dụ: Giả sử, bạn có

shutil.rmtree(role_fs_path, ignore_errors=True)
0 trong tập lệnh Python của bạn và nó chứa một số tệp và thư mục con:: Say, you have the
shutil.rmtree(role_fs_path, ignore_errors=True)
0 in your Python script and it contains some files and subfolders:

path
--to
----folder
------file1.dat
------file2.dat
------subfolder1
--------file3.dat
------subfolder2
--------file4.dat

Bạn muốn xóa tất cả các nội dung in đậm trong cấu trúc thư mục ví dụ trước.

Phương pháp 1: Xóa các tệp cùng một lúc với SHOWIL.RMTREE ()

Mô -đun

shutil.rmtree(role_fs_path, ignore_errors=True)
1 cung cấp chức năng
shutil.rmtree(role_fs_path, ignore_errors=True)
2 loại bỏ tất cả các thư mục và tệp được đệ quy từ một đường dẫn nhất định.

import shutil

# String path of folder to be removed:
path = 'path/to/folder'

# Remove the folder recursively:
shutil.rmtree(path)

Hàm

shutil.rmtree(role_fs_path, ignore_errors=True)
3 xóa toàn bộ cây thư mục tại đường dẫn được cung cấp trỏ đến một thư mục (không phải là một tệp hoặc liên kết tượng trưng của thư mục).

Lưu ý rằng các tệp chỉ đọc không thể được xóa khỏi thư mục bằng tiện ích này vì chúng chỉ đọc. Đó là lý do tại sao nó sẽ ném một lỗi khi bạn cố gắng xóa các tệp chỉ đọc. Nếu bạn muốn xóa nội dung thư mục còn lại bất kể, bạn cần đặt đối số tùy chọn

shutil.rmtree(role_fs_path, ignore_errors=True)
4.read only. That’s why it’ll throw an error when you try to remove read-only files. If you want to remove the remaining folder contents regardless, you need to set the optional argument
shutil.rmtree(role_fs_path, ignore_errors=True)
4.

shutil.rmtree(path, ignore_errors=True)

Tuy nhiên, các tập tin chỉ đọc won đã được xóa trong mọi trường hợp!

Phương pháp 2: Xóa các tệp riêng lẻ bằng os.walk ()

Một cách tiếp cận chi tiết hơn được cung cấp bởi hàm

shutil.rmtree(role_fs_path, ignore_errors=True)
5:

import os

# String path of folder to be removed:
path = 'path/to/folder'

# Remove the folder by walking through the files (from the bottom up):
for root, dirs, files in os.walk(path, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

Chú ý: Trước khi sử dụng mã này, hãy đảm bảo rằng nó phù hợp với vấn đề cụ thể của bạn vì nó có khả năng xóa tất cả các tệp trong hệ điều hành của bạn nếu bạn chỉ định đường dẫn cấp cao nhất của bạn là ‘/hoặc bất kỳ đường dẫn gốc nào khác trong hệ điều hành cụ thể của bạn.: Before using this code make sure it’s tailored to your specific problem as it can potentially remove all files in your operating system if you specify your top-level path as ‘/’ or any other root path in your specific operating system.

  • Phương thức
    shutil.rmtree(role_fs_path, ignore_errors=True)
    
    6 cung cấp trình lặp trên tất cả các tệp tại path đã cho. Đối số
    shutil.rmtree(role_fs_path, ignore_errors=True)
    
    8 đảm bảo rằng bạn di chuyển từ dưới lên, tức là, trước tiên bạn xóa tất cả các nội dung của một thư mục trước khi xóa thư mục.
  • Phương thức
    shutil.rmtree(role_fs_path, ignore_errors=True)
    
    9 xóa tệp tại vị trí
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    0 trong đó
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    1 là hậu tố tệp (ví dụ:
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    2) và
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    3 là đường dẫn đến tệp này (ví dụ:
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    4).removes the file at the location
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    0 where
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    1 is the file suffix (e.g.,
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    2) and
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    3 is the path to this file (e.g.,
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    4).
  • Phương thức
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    5 xóa thư mục tại vị trí
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    0 trong đó
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    1 là hậu tố thư mục (ví dụ:
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    2) và
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    3 là đường dẫn đến tệp này (ví dụ:
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    4).removes the folder at the location
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    0 where
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    1 is the folder suffix (e.g.,
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    2) and
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    3 is the path to this file (e.g.,
    path
    --to
    ----folder
    ------file1.dat
    ------file2.dat
    ------subfolder1
    --------file3.dat
    ------subfolder2
    --------file4.dat
    4).

Phương pháp 3: Đi qua các tệp và thư mục bằng cách sử dụng pathlib

import pathlib


# String path of folder to be removed:
path = 'path/to/folder'

# Remove the folder
del_folder(path):
    for sub in path.iterdir():
        if sub.is_dir():
            # Delete folder if it is a folder
            del_folder(sub)
        else :
            # Delete file if it is a file:
            sub.unlink()
    
    # This removes the top-level folder:
    path.rmdir()

del_folder(pathlib.Path(path))

Resources:

  • https://stackoverflow.com/questions/303200/how-do-i-remove-delete-a-folder-that-is-not-empty
  • https://stackoverflow.com/questions/1557351/python-delete-non-empty-dir

Đi đâu từ đây?

Đủ lý thuyết. Hãy để có được một số thực hành!

Các lập trình viên được trả tiền sáu con số và hơn thế nữa vì họ có thể giải quyết các vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa.

Để trở nên thành công hơn trong việc mã hóa, giải quyết nhiều vấn đề thực sự hơn cho người thực. Đó là cách bạn đánh bóng các kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, những gì mà việc sử dụng lý thuyết học tập mà không ai cần?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế!

Bạn có muốn ngừng học hỏi với các dự án đồ chơi và tập trung vào các dự án mã thực tế kiếm tiền cho bạn và giải quyết các vấn đề thực sự cho mọi người?

Nếu câu trả lời của bạn là có !, Hãy xem xét việc trở thành một nhà phát triển tự do Python! Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện các kỹ năng trăn của bạn, ngay cả khi bạn là người mới bắt đầu hoàn toàn.YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi Làm thế nào để xây dựng kỹ năng thu nhập cao của bạn Python và tìm hiểu cách tôi phát triển kinh doanh mã hóa của mình trực tuyến và làm thế nào bạn có thể, từ sự thoải mái của bạn riêng nhà.

Tham gia hội thảo trên web miễn phí ngay bây giờ!

Hướng dẫn how do you delete a directory that is not empty in python? - làm thế nào để bạn xóa một thư mục không trống trong python?

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

Làm thế nào để bạn xóa một thư mục đầy trong Python?

Xóa tệp/DIR bằng HĐH. hệ điều hành. Phương thức rmdir () trong python được sử dụng để xóa hoặc xóa một thư mục trống. Oserror sẽ được nâng lên nếu đường dẫn được chỉ định không phải là một thư mục trống.rmdir() method in Python is used to remove or delete an empty directory. OSError will be raised if the specified path is not an empty directory.

Làm thế nào để tôi thoát khỏi

Làm thế nào để loại bỏ các thư mục (thư mục)..
Để xóa một thư mục trống, sử dụng rmdir hoặc rm -d theo sau là tên thư mục: rm -d dirname rmdir dirname ..
Để xóa các thư mục không trống và tất cả các tệp trong chúng, hãy sử dụng lệnh rm với tùy chọn -R (đệ quy): rm -r dirname ..

Bạn có thể sử dụng lệnh rmdir để xóa một thư mục không trống không?

Lệnh RMDIR - Chỉ xóa thư mục nếu nó trống.Lệnh RM -Xóa thư mục và tất cả các tệp ngay cả khi nó không trống bằng cách chuyển -r đến RM để xóa một thư mục không trống.rm command – Remove directory and all files even if it is NOT empty by passing the -r to the rm to remove a directory that is not empty.

Việc sử dụng rmtree () trong python là gì?

rmtree () được sử dụng để xóa toàn bộ cây thư mục, đường dẫn phải trỏ đến một thư mục (nhưng không phải là một liên kết tượng trưng đến một thư mục).Tham số: Đường dẫn: Một đối tượng giống như đường dẫn biểu thị đường dẫn tệp.Một đối tượng giống như đường dẫn là một đối tượng chuỗi hoặc byte đại diện cho một đường dẫn.to delete an entire directory tree, path must point to a directory (but not a symbolic link to a directory). Parameters: path: A path-like object representing a file path. A path-like object is either a string or bytes object representing a path.