将.text-file中的第一行写为新.text文件中的列

时间:2013-05-20 13:31:45

标签: python numpy

我正在尝试获取file.txt tab 分隔的字符串)的第一行,并创建一个包含一列的新文件,该列由我想要的行的元素组成提取。我设法用

获取文件的第一行
f = open("file.txt", "r")
row1 = f.readline()

我在使用("new_file.txt", w)进行转置后尝试了x.T,但它无效。获得文件后,我还应分成10个较小的文件。

这是输入文件的示例:

rs123  rs15  rs1567  rs43  rs567  rs3564
    1     2       3     4      5       6
    7     8       9    10     11      12

这就是我需要的:

rs123
rs15
rs1567
rs43
rs567
rs3564

2 个答案:

答案 0 :(得分:1)

with open('inFile.txt', 'r') as inFile, open('outfile.txt', 'w') as outFile:
    outFile.writelines(line + '\n' for line in inFile.readline().split('\t'))

要将文件分成较小的部分,我会使用unix split,例如:

split -l $lines_per_file outfile.txt

要查找$lines_per_file,请将总行数wc -l output.txt除以10。

答案 1 :(得分:1)

您可以使用genfromtxtsavetxt例程:

如果你想保存字符串(根据修正的问题):

import numpy as np
with open('new_file.txt','w') as f:
   for el in np.genfromtxt('file.txt',dtype=None)[0]:
     f.write(str(el)+'\n')

如果数据是数字:

import numpy as np
x=np.genfromtxt('file.txt')[0] 
np.savetxt('new_file.txt',x) 

您甚至可以将这些组合成一行:

np.savetxt('myfile2.dat',np.genfromtxt('myfile.dat')[0])