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:字符串索引超出范围
答案 0 :(得分:0)
IndexError
是由这段代码引起的:
for i in range(100):
index = random.randrange(0, len(source))
result.append(dir[index])
在for
的末尾,index
将具有0
和len(source)-1
之间的随机值,然后您将其用于索引{ {1}}字符串。无法保证dir
(源网站中文件夹的名称)将比dir
返回的数字更长(以字符数表示)。
不要重新发明轮子,看看random.sample,它会从randrange
列表中选择k
个唯一元素。