0
import os,random

def randomizer(input,sample_size,output='NM_controls.xls'):

#Input file with query

    query=open(input,'r').read().split('\n')
    dir,file=os.path.split(input)    
    temp = os.path.join(dir,output)    
    out_file=open(temp,'w')

    name_list = 833 #### got this from input

    output_amount = (name_list)/(sample_size) #### = 3.6 but I want the floor value so its fine

我现在正在编写一个函数,输出的数量取决于输入。所以在我的函数中,它接收一个文件,然后扫描它并对名称和其他数据进行分区。

下一部分互斥并从此列表中随机抽样。我希望它生成一定数量的文件,但这取决于列表中有多少名称。

无论如何使用'os'模块来创建一定数量的我没有在变量中指定的列表?

在这种情况下,它将是 3 个输出 ['output_1.txt','output_2.txt','output_3.txt']

* *抱歉造成混乱!所以我正在使用 OS 模块,因为我想在输入文件所在的同一目录中创建不存在的文件。这是我知道怎么做的唯一方法

4

2 回答 2

0

如果您想“创建一定数量的列表”(直到运行时才知道该数量),这很容易:

my_lists = []
for _ in range(certain_number):
    my_lists.append(make_another_list())

或者,更简单地说:

my_lists = [make_another_list() for _ in range(certain_number)]

或者,如果您有动态数量的输入列表,并且想要为每个列表创建一个输出列表,您甚至不需要计算数量:

my_lists = [transform_a_list(input_list) for input_list in input_lists]

显然,这里没有特定于列表的内容。如您所知,除了and函数list名称中出现的单词之外,我没有利用您创建一定数量的东西是列表的事实。你可以用同样的方法创建一定数量的字符串、数字、数组、线程、文件、数据库等。make_another_listtransform_a_list

于 2013-04-24T18:46:37.043 回答
0

如果您想写入output_amount文件(如the out_file变量所示),那么以下应该可以工作。

for n in range(output_amount):
    outfile = open('%s_%d.txt'%(temp, n), 'w')
    # Now write the data to output file n

如果您想创建一个包含n项目的列表,请参阅 abarnert 的答案。

于 2013-04-24T18:43:21.560 回答