我有一個數以百萬計的項目在一個相當慢的磁盤上的目錄。我想隨機抽取100個這樣的項目,我也想用glob
來做。在Python中隨機抽取目錄的最有效方法
一種方式做到這一點是讓目錄中每個文件的水珠,然後將樣品是:
files = sorted(glob.glob('*.xml'))
file_count = len(files)
random_files = random.sample(
range(0, file_count),
100
)
但這實在是太慢了,因爲我要建立的數百萬個文件的大名單,它必須做大量的磁盤抓取。
有沒有更快的方法來做到這一點,而不是打擊磁盤?它不一定是一個完美分佈的樣本,或者甚至只有100個項目,只要速度快。
我在想:
- 也許我們可以使用索引節點要快?
- 也許我們可以在不知道磁盤上的全部內容的情況下選擇項目?
- 也許有一些捷徑可以使這個更快。
是否目錄的變化,往往?如果沒有,則將文件列表存儲在另一個文件中,並將其用於隨機抽樣。 –
@BrentWashburne它並沒有改變,但我寧願避免混亂,如果技術解決方案是可能的。 – mlissner
文件名是否遵循一種模式?如果第一個字符是[a-z]中的一個字母,那麼您可以選擇一個隨機字母來啓動該glob並隨機選擇一個字母。重複100個文件。 –