将某些目录随机复制到python中的另一个目录
问题描述:
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
答
的IndexError
由这个代码块引起的:
for i in range(100):
index = random.randrange(0, len(source))
result.append(dir[index])
在for
结束时,index
将具有0
和len(source)-1
之间的随机值,然后用它来索引dir
字符串中的字符。不保证dir
(这是源代码目录中文件夹的名称)将比randrange
返回的数字更长(以字符数计)。
不要重新发明轮子,看看random.sample,它会从您的source
列表中挑选k
独特元素。
你好,欢迎来到Stackoverflow。你有什么问题?你遇到了什么问题? – wmk
难道你不想让你的for语句成为'for i in range(len(source)):'? – LampPost
谢谢。我想从总共5000个目录中随机复制100个目录到另一个目录。 –