名單

2012-03-13 40 views
3

在許多Python腳本,我覺得我自己做了以下內容:名單

for maybe_glob in sys.argv[1:]: 
    for filename in glob.iglob(maybe_glob): 
     print(filename) 

我必須這樣做,因爲腳本還需要運行不擴展通配符的終端(如窗口)。有這個更短的版本嗎?有沒有一種方法(例如argparser)在參數解析期間直接擴展通配符?

感謝

+1

我認爲沒有錯的代碼,你已經張貼(除非您使用的argv直接而不是通過一個庫,它可以是亂)。 – katrielalex 2012-03-13 01:55:14

+0

我會小心這樣的事情。 '*'是unix/linux/posix文件名中的有效字符 – wim 2012-03-13 02:41:17

回答

1

你可能避免與鏈接的迭代器的雙循環,但它幾乎似乎是一個進步。

for fname in itertools.chain(*map(glob.iglob, sys.argv[1:])): 
    print fname 

但是你可以把它包裝成一個例行:

def allglob(args): 
    return itertools.chain.from_iterable(map(glob.iglob, args))