将一些目录随机复制到python中的另一个目录

时间:2015-11-06 20:00:25

标签: python operating-system bioinformatics fasta shutil

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个目录并复制到另一个目录。 我可以将它们全部连接到multi-fasta文件中,然后从它们创建一个子集,但我正在使用的程序喜欢为每个fasta文件分别创建目录。

  

indexError:字符串索引超出范围

1 个答案:

答案 0 :(得分:0)

IndexError是由这段代码引起的:

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

for的末尾,index将具有0len(source)-1之间的随机值,然后您将其用于索引{ {1}}字符串。无法保证dir(源网站中文件夹的名称)将比dir返回的数字更长(以字符数表示)。

不要重新发明轮子,看看random.sample,它会从randrange列表中选择k个唯一元素。