Kinh Nghiệm Hướng dẫn Hướng dẫn how do i delete all files in a directory in python? - làm cách nào để xóa tất cả những tệp trong một thư mục trong python? Chi Tiết
Bùi Văn Quân đang tìm kiếm từ khóa Hướng dẫn how do i delete all files in a directory in python? - làm cách nào để xóa tất cả những tệp trong một thư mục trong python? được Update vào lúc : 2022-11-21 21:50:09 . Với phương châm chia sẻ Bí quyết về trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi Read tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Ad lý giải và hướng dẫn lại nha.Làm thế nào tôi hoàn toàn có thể xóa nội dung của một thư mục cục bộ trong Python?
Nội dung chính Show- Làm thế nào tất cả chúng ta hoàn toàn có thể xóa tất cả những tệp trong một thư mục?Lệnh nào được sử dụng để xóa tất cả những tệp trong một thư mục?Lệnh nào được sử dụng để xóa những tệp trong Python?Có một hiệu suất cao xóa trong Python?
Dự án hiện tại là dành riêng cho Windows, nhưng tôi cũng muốn xem *nix.
Martineau
Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges
Đã hỏi ngày 9 tháng 10 năm 2008 lúc 4:22Oct 9, 2008 4:22
UNKWNTECHUNKWNTECHUnkwnTech
85,7K65 Huy hiệu vàng183 Huy hiệu bạc228 Huy hiệu Đồng65 gold badges183 silver badges228 bronze badges
4
import os, shutil thư mục="/path/to/thư mục" for filename in os.listdir(thư mục): file_path = os.path.join(thư mục, filename) try: if os.path.isfile(file_path) or os.path.islink(file_path): os.unlink(file_path) elif os.path.isdir(file_path): shutil.rmtree(file_path) except Exception as e: print('Failed to delete %s. Reason: %s' % (file_path, e))
Mark Amery
134K78 Huy hiệu vàng395 Huy hiệu bạc444 Huy hiệu đồng78 gold badges395 silver badges444 bronze badges
Đã trả lời ngày 9 tháng 10 năm 2008 lúc 4:27Oct 9, 2008 4:27
Nick Stinematesnick StinematesNick Stinemates
40K21 Huy hiệu vàng59 Huy hiệu bạc60 Huy hiệu đồng21 gold badges59 silver badges60 bronze badges
4
Bạn hoàn toàn có thể chỉ việc làm điều này:
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f)Tất nhiên bạn hoàn toàn có thể sử dụng một bộ lọc khác trong đường dẫn của bạn, ví dụ: /you/path/*.txt để xóa tất cả những tệp văn bản trong một thư mục.
John Smith
7.1036 Huy hiệu vàng48 Huy hiệu bạc61 Huy hiệu Đồng6 gold badges48 silver badges61 bronze badges
Đã trả lời ngày 22 tháng 4 năm 2011 lúc 15:23Apr 22, 2011 15:23
BlueiceFieldBlueiceFieldBlueicefield
4.9591 Huy hiệu vàng15 Huy hiệu bạc8 Huy hiệu đồng1 gold badge15 silver badges8 bronze badges
7
Bạn hoàn toàn có thể xóa chính thư mục, cũng như tất cả những nội dung của nó, bằng phương pháp sử dụng
import shutil shutil.rmtree('/path/to/thư mục') 9:import shutil shutil.rmtree('/path/to/thư mục') import os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) 0
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 link tượng trưng đến một thư mục). Nếu bỏ qua_errors là đúng, những lỗi do vô hiệu không thành công sẽ bị bỏ qua; Nếu sai hoặc bị bỏ qua, những lỗi như vậy được xử lý bằng phương pháp gọi một trình xử lý được chỉ định bởi Onerror hoặc, nếu điều đó bị bỏ qua, chúng sẽ tăng một ngoại lệ.
Mark Amery
134K78 Huy hiệu vàng395 Huy hiệu bạc444 Huy hiệu đồng78 gold badges395 silver badges444 bronze badges
Đã trả lời ngày 9 tháng 10 năm 2008 lúc 4:27Oct 9, 2008 7:18
11
Nick Stinematesnick Stinemates
40K21 Huy hiệu vàng59 Huy hiệu bạc60 Huy hiệu đồngBạn hoàn toàn có thể chỉ việc làm điều này:Jul 2, 2009 9:25
Tất nhiên bạn hoàn toàn có thể sử dụng một bộ lọc khác trong đường dẫn của bạn, ví dụ: /you/path/*.txt để xóa tất cả những tệp văn bản trong một thư mục.Iker Jimenez
John Smith9 gold badges47 silver badges46 bronze badges
4
7.1036 Huy hiệu vàng48 Huy hiệu bạc61 Huy hiệu Đồng
Đã trả lời ngày 22 tháng 4 năm 2011 lúc 15:23
from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()]BlueiceFieldBlueiceField
from pathlib import Path from shutil import rmtree for path in Path("/path/to/thư mục").glob("**/*"): if path.is_file(): path.unlink() elif path.is_dir(): rmtree(path)
4.9591 Huy hiệu vàng15 Huy hiệu bạc8 Huy hiệu đồngMay 15, 2022 14:04
Bạn hoàn toàn có thể xóa chính thư mục, cũng như tất cả những nội dung của nó, bằng phương pháp sử dụng
import shutil shutil.rmtree('/path/to/thư mục') 9:Huskyimport os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) 02 gold badges44 silver badges40 bronze badges
2
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 link tượng trưng đến một thư mục). Nếu bỏ qua_errors là đúng, những lỗi do vô hiệu không thành công sẽ bị bỏ qua; Nếu sai hoặc bị bỏ qua, những lỗi như vậy được xử lý bằng phương pháp gọi một trình xử lý được chỉ định bởi Onerror hoặc, nếu điều đó bị bỏ qua, chúng sẽ tăng một ngoại lệ.
Đã trả lời ngày 9 tháng 10 năm 2008 lúc 7:18
Mở rộng câu vấn đáp của Mhawke Đây là những gì tôi đã thực hiện. Nó vô hiệu tất cả nội dung của một thư mục nhưng không phải là chính thư mục. Được thử nghiệm trên Linux với những tệp, thư mục và link tượng trưng, cũng tiếp tục hoạt động và sinh hoạt giải trí trên Windows.
import os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) folder_path="/path/to/thư mục" for file_object in os.listdir(folder_path): file_object_path = os.path.join(folder_path, file_object) if os.path.isfile(file_object_path) or os.path.islink(file_object_path): os.unlink(file_object_path) else: shutil.rmtree(file_object_path)
Đã trả lời ngày 2 tháng 7 năm 2009 lúc 9:25Jul 7, 2011 18:25
Iker Jimeneziker Jimenezjgoeders
6.9859 Huy hiệu vàng47 Huy hiệu bạc46 Huy hiệu đồng18 silver badges24 bronze badges
2
This:
- Tôi ngạc nhiên lúc không còn ai đề cập đến import os
import shutil
for root, dirs, files in os.walk('/path/to/thư mục'):
for f in files:
os.unlink(os.path.join(root, f))
for d in dirs:
shutil.rmtree(os.path.join(root, d))
1 tuyệt vời để thực hiện việc làm này.
- Nếu bạn chỉ muốn xóa những tệp trong một thư mục, nó hoàn toàn có thể là một onelinerĐể vô hiệu đệ quy những thư mục, bạn hoàn toàn có thể viết một chiếc gì đó như vậy này: Đã trả lời ngày 15 tháng 5 năm 2022 lúc 14:04
Code:
for filename in os.listdir(dirpath): filepath = os.path.join(dirpath, filename) try: shutil.rmtree(filepath) except OSError: os.remove(filepath)Sử dụng
import os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) 2 và tái tạo thư mục hoàn toàn có thể hoạt động và sinh hoạt giải trí, nhưng tôi đã gặp lỗi khi xóa và ngay lập tức tái tạo những thư mục trên những ổ đĩa mạng.
Mark Amery
134K78 Huy hiệu vàng395 Huy hiệu bạc444 Huy hiệu đồng78 gold badges395 silver badges444 bronze badges
Đã trả lời ngày 9 tháng 10 năm 2008 lúc 4:27Sep 21, 2012 8:24
Nick Stinematesnick StinematesJon Chu
40K21 Huy hiệu vàng59 Huy hiệu bạc60 Huy hiệu đồng2 gold badges19 silver badges19 bronze badges
Bạn hoàn toàn có thể chỉ việc làm điều này:
import os import shutil with os.scandir(target_dir) as entries: for entry in entries: if entry.is_dir() and not entry.is_symlink(): shutil.rmtree(entry.path) else: os.remove(entry.path)Tất nhiên bạn hoàn toàn có thể sử dụng một bộ lọc khác trong đường dẫn của bạn, ví dụ: /you/path/*.txt để xóa tất cả những tệp văn bản trong một thư mục.
import os import shutil # Gather directory contents contents = [os.path.join(target_dir, i) for i in os.listdir(target_dir)] # Iterate and remove each item in the appropriate manner [shutil.rmtree(i) if os.path.isdir(i) and not os.path.islink(i) else os.remove(i) for i in contents]John SmithDec 2, 2012 5:51
7.1036 Huy hiệu vàng48 Huy hiệu bạc61 Huy hiệu ĐồngJacob Wan
Đã trả lời ngày 22 tháng 4 năm 2011 lúc 15:2321 silver badges19 bronze badges
0
BlueiceFieldBlueiceField
4.9591 Huy hiệu vàng15 Huy hiệu bạc8 Huy hiệu đồngBạn hoàn toàn có thể xóa chính thư mục, cũng như tất cả những nội dung của nó, bằng phương pháp sử dụng import shutil shutil.rmtree('/path/to/thư mục') 9:the directory itself will also be deleted by import os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) 6. While this might be acceptable for some, it's not a valid answer for deleting the contents of a thư mục (without side effects). import os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) 0customized owner and mode bits, where there are a lot of contents. Then you delete it with import os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) 6 and rebuild it with import os import shutil for root, dirs, files in os.walk('/path/to/thư mục'): for f in files: os.unlink(os.path.join(root, f)) for d in dirs: shutil.rmtree(os.path.join(root, d)) 9. And you'll get an empty directory with default (inherited) owner and mode bits instead. While you might have the privilege to delete the contents and even the directory, you might not be able to set back the original owner and mode bits on the directory (e.g. you're not a superuser). 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 link tượng trưng đến một thư mục). Nếu bỏ qua_errors là đúng, những lỗi do vô hiệu không thành công sẽ bị bỏ qua; Nếu sai hoặc bị bỏ qua, những lỗi như vậy được xử lý bằng phương pháp gọi một trình xử lý được chỉ định bởi Onerror hoặc, nếu điều đó bị bỏ qua, chúng sẽ tăng một ngoại lệ.be patient and read the code. It's long and ugly (in sight), but proven to be reliable and efficient (in use).Đã trả lời ngày 9 tháng 10 năm 2008 lúc 7:18
Mở rộng câu vấn đáp của Mhawke Đây là những gì tôi đã thực hiện. Nó vô hiệu tất cả nội dung của một thư mục nhưng không phải là chính thư mục. Được thử nghiệm trên Linux với những tệp, thư mục và link tượng trưng, cũng tiếp tục hoạt động và sinh hoạt giải trí trên Windows.
- import os
import shutil
for root, dirs, files in os.walk('/path/to/thư mục'):
for f in files:
os.unlink(os.path.join(root, f))
for d in dirs:
shutil.rmtree(os.path.join(root, d))
Nó xử lý những tập tin chỉ đọc độc đáo.
Đây là mã (hàm hữu ích duy nhất là
from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()] 3):import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 0Đã trả lời ngày 19 tháng 7 năm 2014 lúc 20:21Jul 19, 2014 20:21
RockalliterockalliteRockallite
16K7 Huy hiệu vàng53 Huy hiệu bạc48 Huy hiệu đồng7 gold badges53 silver badges48 bronze badges
1
Là một oneliner:
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 1Một giải pháp mạnh mẽ và tự tin hơn, kế toán cho những tập tin và thư mục cũng tiếp tục là (2.7):
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 2Đã trả lời ngày 24 tháng 11 năm 2013 lúc 11:22Nov 24, 2013 11:22
fmonegagliafmonegagliafmonegaglia
2.6892 Huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu Đồng2 gold badges24 silver badges33 bronze badges
6
Tôi đã từng xử lý và xử lý vấn đề theo cách này:
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 3
Đã trả lời ngày 17 tháng 6 năm 2013 lúc 11:52Jun 17, 2013 11:52
ProfHase85ProfHase85ProfHase85
11.4K7 Huy hiệu vàng46 Huy hiệu bạc61 Huy hiệu Đồng7 gold badges46 silver badges61 bronze badges
12
Để xóa tất cả những tệp bên trong thư mục cũng như những hướng dẫn phụ của nó, mà không cần tự xóa những thư mục, chỉ việc làm điều này:
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 4
Đã trả lời ngày 26 tháng 2 năm 2022 lúc 15:59Feb 26, 2022 15:59
Kevin Patelkevin PatelKevin Patel
5559 Huy hiệu bạc11 Huy hiệu đồng9 silver badges11 bronze badges
1
Để xóa tất cả những tệp bên trong thư mục A tôi sử dụng:
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 5Đã trả lời ngày 12 tháng 5 năm 2022 lúc 19:04May 12, 2022 19:04
Andrecandrecandrec
1493 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges
2
Bạn hoàn toàn có thể tốt hơn khi sử dụng
from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()] 2 cho việc này.from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()] 5 không phân biệt những tệp với những thư mục và bạn sẽ nhanh gọn gặp rắc rối khi nỗ lực hủy link những tệp này. Có một ví dụ điển hình về việc sử dụng from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()] 2 để vô hiệu một thư mục ở đây và gợi ý về cách thích ứng với thực trạng của bạn.Đã trả lời ngày 9 tháng 10 năm 2008 lúc 5:52Oct 9, 2008 5:52
Mhawkemhawkemhawke
82.2K9 Huy hiệu vàng113 Huy hiệu bạc135 Huy hiệu Đồng9 gold badges113 silver badges135 bronze badges
0
Nếu bạn đang sử dụng khối mạng lưới hệ thống *Nix, tại sao không tận dụng lệnh khối mạng lưới hệ thống?
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 6Đã trả lời ngày 12 tháng 6 năm 2022 lúc 9:06Jun 12, 2022 9:06
Silverbulletttsilverbulletttsilverbullettt
8261 Huy hiệu vàng10 Huy hiệu bạc13 Huy hiệu đồng1 gold badge10 silver badges13 bronze badges
5
Tôi đã phải xóa những tệp khỏi 3 thư mục riêng biệt bên trong một thư mục mẹ duy nhất:
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 7Mã đơn giản này đã làm thủ thuật cho tôi: (Tôi đang sử dụng Unix)
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 8Hi vọng điêu nay co ich.
Đã trả lời ngày 11 tháng 1 năm 2022 lúc 11:34Jan 11, 2022 11:34
NicobarnicobarNicoBar
5251 Huy hiệu vàng7 Huy hiệu bạc15 Huy hiệu đồng1 gold badge7 silver badges15 bronze badges
Một giải pháp khác:
import os import glob files = glob.glob('/YOUR/PATH/*') for f in files: os.remove(f) 9Đã trả lời ngày 12 tháng 5 năm 2014 lúc 16:33May 12, 2014 16:33
Robin Winslowrobin WinslowRobin Winslow
10,5K8 Huy hiệu vàng58 Huy hiệu bạc89 Huy hiệu đồng8 gold badges58 silver badges89 bronze badges
1
Tôi konw đó là một chủ đề cũ nhưng tôi đã tìm thấy một chiếc gì đó thú vị từ trang web chính thức của Python. Chỉ để chia sẻ một ý tưởng khác để vô hiệu tất cả những nội dung trong một thư mục. Bởi vì tôi có một số trong những vấn đề về ủy quyền khi sử dụng SOWL.RMTREE () và tôi không thích xóa thư mục và tạo lại nó. Địa chỉ gốc là ://docs.python.org/2/l Library/os.html#os.walk. Hy vọng điều đó hoàn toàn có thể giúp ai đó.
import shutil shutil.rmtree('/path/to/thư mục') 0Đã trả lời ngày 2 tháng 5 năm 2013 lúc 14:24May 2, 2013 14:24
SawyerawyerSawyer
5385 Huy hiệu bạc17 Huy hiệu đồng5 silver badges17 bronze badges
Vâng, tôi nghĩ rằng mã này đang hoạt động và sinh hoạt giải trí. Nó sẽ không xóa thư mục và bạn hoàn toàn có thể sử dụng mã này để xóa những tệp có tiện ích mở rộng rõ ràng.
import shutil shutil.rmtree('/path/to/thư mục') 1Đã trả lời ngày 4 tháng 11 năm 2022 lúc 18:59Nov 4, 2022 18:59
Cách thực hiện khá trực quan:
import shutil shutil.rmtree('/path/to/thư mục') 2Đã trả lời ngày 26 tháng 7 năm 2022 lúc 9:16Jul 26, 2022 9:16
ManriquemanriqueManrique
1.9303 huy hiệu vàng15 Huy hiệu bạc34 Huy hiệu đồng3 gold badges15 silver badges34 bronze badges
1
Sử dụng phương thức dưới đây để xóa nội dung của thư mục, không phải chính thư mục:
import shutil shutil.rmtree('/path/to/thư mục') 3Đã trả lời ngày 3 tháng 2 năm 2022 lúc 8:23Feb 3, 2022 8:23
Amrezzdamrezzdamrezzd
1.61214 Huy hiệu bạc36 Huy hiệu đồng14 silver badges36 bronze badges
3
Trả lời cho một tình huống rõ ràng, hạn chế: Giả sử bạn muốn xóa những tệp trong khi duy trì cây con, bạn hoàn toàn có thể sử dụng thuật toán đệ quy:
import shutil shutil.rmtree('/path/to/thư mục') 4Có thể hơi lạc đề, nhưng tôi nghĩ nhiều người sẽ thấy nó hữu ích
Mark Amery
134K78 Huy hiệu vàng395 Huy hiệu bạc444 Huy hiệu đồng78 gold badges395 silver badges444 bronze badges
Đã trả lời ngày 27 tháng 12 năm 2022 lúc 10:55Dec 27, 2022 10:55
fmonegagliafmonegagliafmonegaglia
2.6892 Huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu Đồng2 gold badges24 silver badges33 bronze badges
1
Tôi đã từng xử lý và xử lý vấn đề theo cách này:
import shutil shutil.rmtree('/path/to/thư mục') 5Đã trả lời ngày 17 tháng 6 năm 2013 lúc 11:52Sep 19 17:22
11.4K7 Huy hiệu vàng46 Huy hiệu bạc61 Huy hiệu Đồngdazzafact
Để xóa tất cả những tệp bên trong thư mục cũng như những hướng dẫn phụ của nó, mà không cần tự xóa những thư mục, chỉ việc làm điều này:3 gold badges27 silver badges45 bronze badges
Đã trả lời ngày 26 tháng 2 năm 2022 lúc 15:59
import shutil shutil.rmtree('/path/to/thư mục') 6
Kevin Patelkevin PatelMar 21, 2022 16:10
5559 Huy hiệu bạc11 Huy hiệu đồngphyslexic
Để xóa tất cả những tệp bên trong thư mục A tôi sử dụng:1 gold badge8 silver badges20 bronze badges
Đã trả lời ngày 12 tháng 5 năm 2022 lúc 19:04
import shutil shutil.rmtree('/path/to/thư mục') 7AndrecandrecJul 30, 2022 18:40
1493 Huy hiệu bạc7 Huy hiệu đồngPyBoss
Bạn hoàn toàn có thể tốt hơn khi sử dụng from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()] 2 cho việc này.7 silver badges18 bronze badges
1
from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()] 5 không phân biệt những tệp với những thư mục và bạn sẽ nhanh gọn gặp rắc rối khi nỗ lực hủy link những tệp này. Có một ví dụ điển hình về việc sử dụng from pathlib import Path [f.unlink() for f in Path("/path/to/folder").glob("*") if f.is_file()] 2 để vô hiệu một thư mục ở đây và gợi ý về cách thích ứng với thực trạng của bạn.import shutil shutil.rmtree('/path/to/thư mục') 8Đã trả lời ngày 9 tháng 10 năm 2008 lúc 5:52
MhawkemhawkeJun 20, 2022 15:52