【问题标题】:Generate N amount of outputs depending on input. Python根据输入生成 N 个输出。 Python
【发布时间】:2013-04-24 18:28:34
【问题描述】:
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 模块,因为我想在输入文件所在的同一目录中创建不存在的文件。这是我知道怎么做的唯一方法

【问题讨论】:

  • 不太清楚你在问什么......
  • 您的问题中的“使用'os'模块”是什么?
  • 另外,通常情况下,“创建多个 Foo”的方法,无论 Foo 是什么,都是创建一个 list 或其他集合,以及创建一个 Foo 并将其添加到的循环列表(或者,更简单地说,使用列表推导式一步完成)。
  • 您可以简单地调用 open 并带有 'w' 标志来创建一个新文件。无需使用os。
  • 请修改您的问题,以明确表明您是在询问有关写入n 文件的问题(如您对我的回答的评论中所述),以便问题和答案对其他人有用跨度>

标签: python function operating-system output


【解决方案1】:

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

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 函数的名称中之外,我没有利用您正在创建一定数量的事物这一事实列表。你可以用同样的方法创建一定数量的字符串、数字、数组、线程、文件、数据库等。

【讨论】:

  • 我认为可以公平地说,我们已经在答案中涵盖了列表生成和 n 文件输出 - 也许答案是两者的某种组合;)
  • @mutzmatron:是的,这就是我的目标……或者,如果不是真正的答案,也许我们之间已经写了足够多的东西让 OP 说,“不,这不是我想要的this is”(其中“this”是我们可以回答的)。
【解决方案2】:

如果您想写入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 的回答。

【讨论】:

  • 嗯,他想“创建一定数量的列表”,但这不会这样做……但它会“创建一定数量的文件”,考虑到这个问题有多令人困惑,也许这很接近……
  • @abarnert - 是的,据我所知,我假设 OP 然后独立处理每个列表元素(因为它们不会显示正在创建的列表)并保存输出,在这种情况下,他们也可以只循环文件数而不是创建列表
  • 这是我一直在寻找的东西,但我对如何让它工作感到困惑......所以我想写到 out_file1、out_file2 和 out_file3 ......所以这就是它所以我可以写到 temp_1 等等?
  • @draconisthe0ry - 不,temp 是一个变量,它保存您的代码中的根文件名。例如。如果 temp 为“/home/user/thisfile”,则输出将写入“/home/user/thisfile_1.txt”、“/home/user/thisfile_2.txt”等
  • @draconisthe0ry - 请参阅此处 docs.python.org/2/library/… 了解 python 中的一般字符串格式(这是我使用的)
猜你喜欢
  • 1970-01-01
  • 2014-06-25
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 2021-11-13
相关资源
最近更新 更多