2011-11-20 14 views
5

Çalışan dosyalarımı yönetmesi beklenen bir python komut dosyası yazıyorum. Kaynak ve hedef klasörün çalıştırılmadan önce var olduğundan emin olmak istiyorum ve bunu os.path.exists ile yapabilirim. Bununla birlikte, runner<i> katlama kümeleri var. Bu isimle başlayan bazı klasörler olduğunu kontrol etmenin bir yolu var mı? ÖrneğinBelirli bir dize ile başlayan bir adla bir klasör olup olmadığını denetleme

, yoldaki /path/to/runners Ben runner en az bir klasör adında varsa:

// yol/koşucular/$ ls file1.txt
file2.txt
klasör1
klasor2
runner1 runner35
zfolder

Sonra sonuç doğrudur. Runner1 ve runner35'i kaldırın ve false olacaktır.

cevap

9

Aşağıdaki yapabilirdi: yararlı any function ve generator expression kullanır

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

.

+0

+1. Eğer eşleşen yolların listesini kullanmak istiyorsanız, “glob” kullanışlıdır, ancak hızlı olmayan testler bu yöntemin yaklaşık iki kat daha hızlı olduğunu gösterir. –

4

Mark Longair cevabı oldukça ince olduğunu ve ifadenin bu tür bir (eşdeğer) alternatif topak kullanmaktır: Bunun

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' 
İlgili konular