从多个文本文件中调用随机行

时间:2013-08-09 07:32:29

标签: python random

所以假设我有5个文本文件a.txt,b.txt,c.txt,d.txt,e.txt。我希望能够从每个内容中读取内容并从每个内容中调用随机行 a:来自a.txt的rand b:来自b.txt的rand 等

到目前为止,这适用于一个文本文件...

import random

contents=[]

with open("a.txt") as a:
    for line in a:
        line=line.strip()
        contents.append(line)

print "Welcome!"
print ""
print "a:", contents[random.randint(0,len(contents)-1)]

欢呼任何帮助< 3

2 个答案:

答案 0 :(得分:1)

使用foo循环。

使用randmo.choice代替random.randint

import os
import random

for filepath in ['a.txt', 'b.txt', 'c.txt', 'd.txt', 'e.txt']:
    with open(filepath) as f:
        lines = [line.strip() for line in f]
    print os.path.splitext(os.path.basename(filepath))[0], ':', random.choice(lines)

答案 1 :(得分:0)

您可以将逻辑放入一个将文件名作为参数的函数中,同时将随机选择放入该函数中:

import random

def pick_random(filename):
    contents=[]
    with open(filename) as a:
        for line in a:
            line=line.strip()
            contents.append(line)
    return contents[random.randint(0,len(contents)-1)]

print "Welcome!"
print ""
print "a:", pick_random("a.txt")
print "b:", pick_random("b.txt")

您可以为要从中选择一行的每个文件调用该函数,方法是逐个调用它们,或者将所有文件放入列表并循环遍历它们。

这是对代码的直接扩展,但请考虑使用falsetru的答案来获得更清晰的解决方案。使用random.choice可以更明确地了解您想要完成的任务。