2015-11-06 108 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独特元素。

相关问题