2011-11-20 39 views
5

Tôi đang viết một tập lệnh python được cho là quản lý các tệp đang chạy của tôi. Tôi muốn đảm bảo rằng thư mục nguồn và đích tồn tại trước khi tôi chạy nó và tôi có thể làm điều này với os.path.exists. Tuy nhiên, tôi có một bộ tên thư mục runner<i>. Có cách nào để kiểm tra xem có một số thư mục bắt đầu bằng tên đó không?kiểm tra xem có thư mục có tên bắt đầu bằng một chuỗi cụ thể

Ví dụ, nếu trong đường dẫn /path/to/runners Tôi đã ít nhất một thư mục có tên runner:

/path/to/nhì/$ ls file1.txt
file2.txt
folder1
folder2
runner1 runner35
zfolder

Sau đó, kết quả là đúng. Xóa runner1 runner35 và nó sẽ là sai.

Trả lời

9

Bạn có thể làm như sau:

import os 
if any(x.startswith('runner') for x in os.listdir('/path/to/runners')): 
    print "At least one entry begins with 'runner'" 

Đó sử dụng hữu ích any function và một generator expression. câu trả lời

+0

+1 cho việc này. 'glob' là hữu ích nếu bạn thực sự muốn sử dụng danh sách các đường dẫn phù hợp nhưng một thử nghiệm không nghiêm ngặt nhanh chóng cho thấy phương pháp này nhanh gấp đôi so với glob –

4

Đánh dấu Longair là khá tốt, và một (tương đương) thay thế cho các loại hình biểu hiện là sử dụng glob:

import glob 
if glob.glob('/path/to/runners/runner*'): 
    print "At least one entry begins with 'runner'" 
5
import glob 

if glob.glob('/path/to/runners/runner*'): 
    print 'condition satisfied' 
Các vấn đề liên quan