python脚本中需要修改

python脚本中需要修改,python,python-3.x,Python,Python 3.x,我需要按最后一列(升序)对文件进行排序,并对前一百行进行grep。代码是: import sys from operator import itemgetter file_name = sys.argv[1] with open(file_name) as file: file_contents = file.read() lines = file_contents.split("\n")[1:-1] data = [(i, float(line.split()[-1])) for i

我需要按最后一列(升序)对文件进行排序,并对前一百行进行grep。代码是:

import sys
from operator import itemgetter
file_name = sys.argv[1]
with open(file_name) as file:
    file_contents = file.read()
lines = file_contents.split("\n")[1:-1] 
data = [(i, float(line.split()[-1])) for i, line in enumerate(lines)]
sorted_data = sorted(data, key=itemgetter(1))
print lines[sorted_data[0]]
文件格式:

1                        ddddd     346700    T        ADD      798   0.002934       0.2829       0.7
1                         dddd     943567    A        ADD      798   -0.02574       -1.496       0.1
此代码返回错误:

error 
list indices must be integers, not tuple

排序的_数据是元组列表,第一个数字是lines变量中的行号。您的代码错误,因为打印时试图将元组而不是整数传递到lines变量中。要获取lines变量中的相关行,可以使用列表:

results = [lines[idx] for idx, v in sorted_data]
print(results[:100])

第一行和最后一行被忽略了,希望没问题。这给了我一个列表作为输出。这是一个你想要的行的排序列表。最终的格式由您决定。好的,我如何打印刚刚排序的前100行并将其存储在单独的文件中。我要做的是打开文件并按最后一列对其排序,然后在一个单独的文件中grep top 100排序行