【问题标题】:copy some directories randomly to another directory in python将一些目录随机复制到python中的另一个目录
【发布时间】:2016-02-08 01:42:00
【问题描述】:
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 文件设置单独的目录。

indexError: 字符串索引超出范围

【问题讨论】:

  • 您好,欢迎来到 Stackoverflow。你有什么问题?你遇到了什么问题?
  • 您不希望您的 for 语句为for i in range(len(source)):吗?
  • 谢谢。我想将总共 5000 个目录中的 100 个目录随机复制到另一个目录中。

标签: python operating-system bioinformatics fasta shutil


【解决方案1】:

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独特的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多