Có thể xem các tệp có phần mở rộng nhất định bằng lệnh os.listdir không? Tôi muốn nó hoạt động để nó chỉ hiển thị các tệp hoặc thư mục có đuôi .f ở cuối. Tôi đã kiểm tra tài liệu và không tìm thấy gì cả, vì vậy đừng hỏi.Python: os.listdir thay thế/một số tiện ích mở rộng
Trả lời
glob
là tốt tại đây:
import glob
for f in glob.glob("*.f"):
print f
Đừng hỏi gì?
[s for s in os.listdir() if s.endswith('.f')]
Nếu bạn muốn kiểm tra một danh sách các phần mở rộng, bạn có thể làm cho khái quát rõ ràng,
[s for s in os.listdir() if s.endswith('.f') or s.endswith('.c') or s.endswith('.z')]
hay cách khác đây là ngắn hơn một chút để viết:
[s for s in os.listdir() if s.rpartition('.')[2] in ('f','c','z')]
Có rất nhiều thứ mà có chức năng rõ ràng gọi bằng các ngôn ngữ khác mà được thay thế bằng các hoạt động tích hợp sẵn trong Python. Đó là đôi khi theo dõi khó khăn. Ví dụ, các mẫu bộ điều hợp khác nhau trong thư viện chuẩn C++ đơn giản là 'lambda' trong Python. Đó là một trong những điều yêu thích của tôi về Python. –
"Không hỏi" có nghĩa là "không hỏi tôi", bạn đã kiểm tra tài liệu, nó đã nói gì? "" –
@Ned: Tôi đã nhận ra rằng đó là một câu hỏi nửa chừng. –
[s for s in os.listdir() if os.path.splitext(s) == 'f']
Đây phải là 'os.path.splitext (s) [1] ==' .f''. – Philipp
Có một khả năng không được đề cập cho đến nay:
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.f'):
print file
Trên thực tế đây là cách các module glob
được thực hiện, vì vậy trong trường hợp này glob
là đơn giản hơn và tốt hơn, nhưng các module fnmatch
có thể tiện dụng trong khác tình huống, ví dụ khi thực hiện truyền tải cây bằng cách sử dụng os.walk
.
Hãy thử điều này:
from os import listdir
extension = '.wantedExtension'
mypath = r'my\path'
filesWithExtension = [ f for f in listdir(mypath) if f[(len(f) - len(extension)):len(f)].find(extension)>=0 ]
- 1. Tiện ích mở rộng PSake?
- 2. Tiện ích mở rộng của Python và OpenMP C
- 3. Thay đổi biểu tượng tiện ích mở rộng Chrome
- 4. Sử dụng Tiện ích mở rộng với Selenium (Python)
- 5. Tải tiện ích mở rộng hình ảnh
- 6. Tiện ích mở rộng trình duyệt Android
- 7. Tiện ích mở rộng Intellisense tùy chỉnh
- 8. Tiện ích mở rộng của Chrome + Dart
- 9. Tiện ích mở rộng của Chrome: biểu tượng tiện ích mở rộng onclick, mở popup.html trong tab mới
- 10. Tiện ích mở rộng của Chrome - Hình ảnh của tiện ích mở rộng trên Trang cài đặt
- 11. Tiện ích mở rộng của Chrome + Devise + Rails App - Đặt yêu cầu được xác thực từ tiện ích mở rộng?
- 12. Chuyển đổi Tiện ích mở rộng của Google Chrome sang tiện ích mở rộng của Firefox hoặc Safari
- 13. Đổi kích thước popup.html trong tiện ích mở rộng chrome
- 14. .tiện ích mở rộng gốc của mạng cho node.js
- 15. Khôi phục tương tác với Tiện ích mở rộng Git
- 16. Tiện ích mở rộng của Google Chrome - tập lệnh nền
- 17. theo dõi history.pushstate từ tiện ích mở rộng chrome
- 18. Làm mẫu từ tiện ích mở rộng twig
- 19. Tiện ích mở rộng Crossrider - chúng an toàn không
- 20. Thêm tiện ích mở rộng vào URL: Đường ray
- 21. RequireJS trong tiện ích mở rộng của Chrome
- 22. gỡ lỗi background.js trong tiện ích mở rộng chrome
- 23. bảo mật mã trong tiện ích mở rộng google chrome
- 24. Làm mẫu Mustache.js trong tiện ích mở rộng của Chrome
- 25. Tiện ích mở rộng của Google Chrome với OAuth
- 26. Tiện ích mở rộng ký hiệu có ký hiệu dài
- 27. Tiện ích mở rộng Rx: Parallel.ForEach ở đâu?
- 28. Tiện ích mở rộng của Firefox với jquery 1.3+
- 29. Flash Builder 4.6 Lỗi tiện ích mở rộng gốc
- 30. Tiện ích mở rộng của Chrome cho Amazon Cloud
+1 ý tưởng hay, điều đó đã không xảy ra với tôi. –
+1 wow, điều đó đã giúp ích rất nhiều! Nhưng chúng ta không thể chỉ in (glob.glob ("*. Py"))? – Galilsnap
Bạn có thể làm điều đó, glob.glob trả về một danh sách, làm những gì bạn muốn với nó. –