使用random.sample格式错误

时间:2017-08-22 11:12:39

标签: python

我需要从文本文件中取一些n个随机行,然后将它们写入新的文本文件中。 代码可以工作,但是使用与原始文件中不同的格式来获取和写入行,并且我希望保持相同。 这是代码:

import random

with open('textfile.dat') as f:
    lines = random.sample(f.readlines(),100) #n=100 for example

out=open('newfile.dat', 'w+') 
print >>out, lines

textfile.dat的一小部分:

 626.0649 310.7645 122.8257
 626.1954 310.5412 123.0418
 627.0475 310.7212 123.2242
 626.6918 311.0145 123.6525
 ...

newfile.dat的一小部分:

['632.3587 304.9801 101.2915\n', '644.4067 307.2889 114.6692\n', '626.0014 312.0789 98.2628\n', '653.1418 307.1721 100.6861\n', ...

我在macOS上使用python 2.7。我该如何解决?

4 个答案:

答案 0 :(得分:3)

嗯...... readlines的对应词是......鼓声...... writelines

out.writelines(lines)

答案 1 :(得分:1)

您正在写出lines,这是一个列表,因此使用列表表示打印 - 带括号和项目之间的逗号。您想要的是逐个打印项目:

for l in lines:
    print >>out, l

或更好(因为与Python3兼容):

for l in lines:
    out.write(l)

哦,不要忘记out.close()

答案 2 :(得分:0)

您需要一次编写每一行。

for line in lines:
    print >> out, l

答案 3 :(得分:0)

您正在编写原始列表,而不是单独编写列表中的每个项目。这也将与Python 3向前兼容:

with open('textfile.dat') as in_f, open('newfile.dat', 'w+') as out_f:
    out_f.writelines(random.sample(in_f.readlines(), 100))