Cách dễ nhất để thực hiện tương đương với rm -rf
bằng Python là gì?Cách dễ nhất để rm-rf bằng Python
Trả lời
import shutil
shutil.rmtree("dir-you-want-to-remove")
Trong khi hữu ích, rmtree không tương đương: nó bị lỗi nếu bạn cố gắng xóa một tệp. –
Để có câu hỏi "loại bỏ thư mục không trống" chung hơn, câu trả lời này sẽ phù hợp hơn: http://stackoverflow.com/questions/303200/how-do-i-remove-delete-a-folder-that -is-not-empty-with-python –
shutil.rmtree() là câu trả lời đúng, nhưng chỉ cần nhìn vào một chức năng hữu ích - os.walk()
Trong khi hữu ích, rmtree là không tương đương: nó lỗi ra nếu bạn cố gắng để loại bỏ một tệp duy nhất, trong đó rm -f
không (xem ví dụ bên dưới).
Để giải quyết vấn đề này, bạn sẽ cần phải kiểm tra xem đường dẫn của bạn là tệp hay thư mục và hành động tương ứng. Một cái gì đó như thế này nên làm như lừa:
import os
import shutil
def rm_r(path):
if os.path.isdir(path) and not os.path.islink(path):
shutil.rmtree(path)
elif os.path.exists(path):
os.remove(path)
Lưu ý: chức năng này sẽ không xử lý nhân vật hoặc chặn các thiết bị (mà sẽ yêu cầu sử dụng các mô-đun stat
).
Ví dụ trong chênh lệch từ rm -f
và Python của shutils.rmtree
$ mkdir rmtest
$ cd rmtest/
$ echo "stuff" > myfile
$ ls
myfile
$ rm -rf myfile
$ ls
$ echo "stuff" > myfile
$ ls
myfile
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import shutil
>>> shutil.rmtree('myfile')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/shutil.py", line 236, in rmtree
onerror(os.listdir, path, sys.exc_info())
File "/usr/lib/python2.7/shutil.py", line 234, in rmtree
names = os.listdir(path)
OSError: [Errno 20] Not a directory: 'myfile'
Edit: xử lý liên kết tượng trưng; lưu ý các giới hạn theo nhận xét của @ pevik
Phiên bản này không hoạt động trên các liên kết tượng trưng đến các thư mục như python trả về 'True' trên' os.path.isdir (symlink_to_directory) ' – pevik
Bắt tốt, @pevik - sửa nó. Cảm ơn! –
import os
import shutil
def rm_r(path):
if not os.path.exists(path):
return
if os.path.isfile(path) or os.path.islink(path):
os.unlink(path)
else:
shutil.rmtree(path)
Cải thiện đáng kể phiên bản Gabriel Grant. Điều này cũng hoạt động trên các liên kết đến các thư mục. Lưu ý: chức năng không không xử lý ký tự Un * x và các thiết bị khối (yêu cầu phải sử dụng mô-đun stat).
Chỉ cần làm điều này:
import os
dirname = "path_to_directory_to_remove"
os.system("rm -rf %s" % dirname)
Downvote vì đây không thực sự là một python tương đương. – admdrew
rm -rf sẽ chỉ hoạt động trên nền tảng * nix và không phải là mã python. – Prikkeldraad
Nó cũng nguy hiểm vì nó không phải là thoát khỏi dirname. –
def Delite (filepath):
import os, stat, sys
def intertwin(_list):
list1 = []
for i in _list:
list1 += i
return list1
allpath = os.walk(filepath)
walk = []
dirs = []
path = []
allfiles = []
for i in allpath:
walk.append(i)
for i in walk:
dirs.append(i[0])
for _dir in dirs:
os.chdir(_dir)
files = os.listdir(_dir)
files1 = []
for i in files:
files1.append(_dir + '\\' + i)
files = files1[:]
allfiles.append(files)
allfiles = intertwin(allfiles)
for i in allfiles:
os.chmod(i, stat.S_IRWXU)
allfiles.reverse()
os.chdir(sys.path[0])
for i in allfiles:
try:
os.remove(i)
except:
try:
os.rmdir(i)
except:
pass
os.chmod(filepath, stat.S_IRWXU)
try:
os.remove(filepath)
except:
os.rmdir(filepath)
allfiles.reverse()
os.chdir(sys.path[0])
for i in allfiles:
try:
os.remove(i)
except:
try:
os.rmdir(i)
except:
pass
os.chmod(filepath, stat.S_IRWXU)
try:
os.remove(filepath)
except:
os.rmdir(filepath)
Удаляет папку с файлами или файл, даже если стоит атрибут "Только чтение" Xóa một thư mục với các tập tin hoặc một tập tin, ngay cả khi các thuộc tính "Read only" – Pogramist
Trong tiếng Anh, xin vui lòng: _Deletes một thư mục với các tập tin hoặc một tập tin , ngay cả khi được gán cho "Chỉ đọc" _ – JosefZ
Đó là dịch, tôi không biết tiếng Anh tốt)) – Pogramist
- 1. Cách dễ nhất để tạo biểu đồ từ Python?
- 2. Cách dễ nhất để truy cập micrô máy tính bằng Python là gì?
- 3. cách dễ nhất để lập trình hệ thống tệp ảo trong các cửa sổ bằng Python
- 4. Cách dễ nhất để kiểm tra số
- 5. Cách dễ nhất để tải xuống tệp?
- 6. DHT dễ nhất để thực hiện
- 7. Cách dễ nhất để tạo các tệp bản địa hóa
- 8. Cách dễ nhất để xoay 90 độ một hình ảnh bằng cách sử dụng OpenCV?
- 9. Cách dễ nhất để có được đầu ra tập lệnh Python trên web là gì?
- 10. Cách dễ nhất để tạo phần mở rộng C tùy chọn cho gói python là gì?
- 11. Cách dễ nhất để kiểm tra Catalyst REST API
- 12. Cách nhanh nhất để nhận HTTP bằng Python là gì?
- 13. Làm cách nào để tạo ID duy nhất bằng Python?
- 14. Cách tốt nhất để mở ổ cắm bằng Python
- 15. Cách đơn giản nhất để SSH bằng Python là gì?
- 16. Cách nhanh nhất để đọc đầu vào bằng Python
- 17. Cách dễ nhất để làm 'là' trong Java là gì?
- 18. thư viện mã hóa tốt nhất/dễ sử dụng nhất trong python
- 19. Cách dễ nhất để chuyển đổi chuỗi xhtml sang PDF bằng Flying Saucer là gì?
- 20. cách dễ nhất để đọc dữ liệu từ bảng tính excel bằng javascript?
- 21. Có cách nào dễ dàng để hợp nhất hai chuỗi được sắp xếp bằng LINQ không?
- 22. Cách dễ nhất để nối NSString và int
- 23. Cách dễ nhất để tìm và thay thế đệ quy?
- 24. Cách dễ nhất để chạy javascript ở phía máy chủ
- 25. Cách dễ nhất để lật giá trị boolean?
- 26. C#: cách dễ nhất để trừ thời gian là gì?
- 27. Cách dễ nhất để tạo mã P/Invoke?
- 28. Cách dễ nhất để sắp xếp các nút DOM?
- 29. Cách dễ nhất để viết và đọc một XML
- 30. Cách dễ nhất để viết NSData vào một tệp
có thể trùng lặp của [Làm thế nào để xóa/xóa thư mục đó không phải là trống rỗng với Python?] (Http: //stackoverflow.com/questions/303200/how-do-i-remove-delete-a-folder-that-is-not-empty-with-python) –