我需要一种方法随机抽取文件夹中10%的文件,以便在每次运行后进行采样。"幸运的是,我当前的文件以数字和顺序编号。所以我目前的方法是列出文件名,解析数字部分,拉出最大值和最小值,计算文件数并乘以.1,然后用random.sample
得到随机数[10%]样本。"我还将这些名称写入.txt,然后使用shutil.copy
移动实际文件。
显然,如果我有一个异常值,这是行不通的,即如果我在345.txt
的其他文件中有一个文件513.txt - 678.txt
。我想知道是否有一个直接的方法来简单地从文件夹中随机拉出一些文件?我查了一下,找不到更好的方法。
感谢。
答案 0 :(得分:2)
使用g_master <- data.frame(V = as.vector(V(g)), g_in, g_out, g_inclo, g_outclo, g_bet)
head(g_master, 2)
# V g_in g_out g_inclo g_outclo g_bet
# 1 1 208 0 2.193608e-05 1.0001e-08 0
# 2 2 48 1 1.042957e-08 1.0002e-08 411
,您可以从数组中随机选择numpy.random.choice(array, N)
个项目。
N
答案 1 :(得分:1)
这将为您提供文件夹中的名称列表,其中mypath是文件夹的路径。
from os import listdir
from os.path import isfile, join
from random import shuffle
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
shuffled = shuffle(onlyfiles)
small_list = shuffled[:len(shuffled)/10]
这应该有效
答案 2 :(得分:0)
您可以使用以下策略:
list = os.listdir(path)
将目录中的所有文件作为路径列表。range = len(list)
函数计算文件。range
号码,您可以获得random_position = random.randrange(1, range)
list[random_position]
使用循环for
进行迭代。
希望这有帮助!
答案 3 :(得分:0)
我无法使用其他方法轻松使用我的代码,但我想出了这个。
output_folder = 'C:/path/to/folder'
for x in range(int(len(files) *.1)):
to_copy = choice(files)
shutil.copy(os.path.join(subdir, to_copy), output_folder)
答案 4 :(得分:0)
基于Karl的解决方案(在Win 10,Python 3.x下对我不起作用),我想到了这一点:
SELECT ?root ?s ?value ?q0
WHERE
{
VALUES ?root { <http://www.wikidata.org/entity/Q42> } .
?root <http://www.wikidata.org/prop/P69> ?s .
?s <http://www.wikidata.org/prop/statement/P69> ?value .
?s <http://www.wikidata.org/prop/qualifier/P582> ?q0.
}