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']
* *抱歉混乱!所以我正在使用操作系统模块,因为我想在输入文件所在的同一目录中创建不存在的文件。这是我知道怎么做的唯一方法
答案 0 :(得分: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的回答。
答案 1 :(得分: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]
显然,这里没有特定于列表的内容。正如你所知道的那样,除了list
和make_another_list
函数名称中出现的transform_a_list
这个词之外,我没有利用你所做的事情这个事实。创建一定数量的列表。您可以以相同的方式创建一定数量的字符串,数字,数组,线程,文件,数据库等。