Linux上的Python中的随机数生成器

时间:2014-05-21 19:03:08

标签: python linux

这是我写的代码:

import os
import string
import random
def id_generator(size=8, chars=string.digits):
    return ''.join(random.choice(chars) for _ in range(size))
b="echo " + id_generator() + "> file.txt"
os.system(100*b)

现在的问题是,当我运行脚本时,它会返回一个不是100的随机数。 我希望当我打开 file.txt 时,它必须像:

123456
241721
126428

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

重定向会覆盖文件的先前内容。您想要>>,而不是>

顺便说一下,没有必要在这里使用过时的os.system()和重定向。你可以这样做:

with open('file.txt', 'w') as f:
    for _ in range(100):
       f.write(id_generator() + '\n')

这也是更加跨平台的。

答案 1 :(得分:0)

要获得100个随机数,你应该调用id_generator()函数100次,但你要做的是将已经生成的字符串连接100次。

试试这个:

import string
import random

def id_generator(size=8, chars=string.digits):
    return ''.join(random.choice(chars) for _ in xrange(size))

random_numbers_string = '\n'.join(id_generator() for _ in xrange(100))

with open('file.txt', 'w') as f:
    f.write(random_numbers_string)