我需要从文本文件中取一些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。我该如何解决?
答案 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))