2015-11-06 103 views
0
import shutil 
import os 
import random 
source = os.listdir("/1/scratch/bacteria") 
destination = "/1/scratch/library/Bacteria/" 
for dir in source: 
     result = [] 
     for i in range(100): 
       index = random.randrange(0, len(source)) 
     result.append(dir[index]) 
     shutil.copy(result, destination) 

我有5000個目錄,每個目錄都包含一個fasta文件,我想隨機選擇100個這些目錄並複製到另一個目錄。 我可以將它們連接成多fasta文件,然後從它們創建一個子集,但我正在使用的程序喜歡爲每個fasta文件分別設置目錄。將某些目錄隨機複製到python中的另一個目錄

indexError: string index out of range

+1

你好,歡迎來到Stackoverflow。你有什麼問題?你遇到了什麼問題? – wmk

+0

難道你不想讓你的for語句成爲'for i in range(len(source)):'? – LampPost

+0

謝謝。我想從總共5000個目錄中隨機複製100個目錄到另一個目錄。 –

回答

0

IndexError由這個代碼塊引起的:

for i in range(100): 
    index = random.randrange(0, len(source)) 
result.append(dir[index]) 

for結束時,index將具有0len(source)-1之間的隨機值,然後用它來索引dir字符串中的字符。不保證dir(這是源代碼目錄中文件夾的名稱)將比randrange返回的數字更長(以字符數計)。

不要重新發明輪子,看看random.sample,它會從您的source列表中挑選k獨特元素。

相關問題