這是一個簡單的腳本,我寫道:如何按v2.3中的第n個元素對列表進行排序?
#!/usr/bin/env python
file = open('readFile.txt', 'r')
lines = file.readlines()
file.close()
del file
sortedList = sorted(lines, key=lambda lines: lines.split('\t')[-2])
file = open('outfile.txt', 'w')
for line in sortedList:
file.write(line)
file.close()
del file
改寫這樣的文件:
161788 group_monitor.sgmops 4530 1293840320 1293840152
161789 group_atlas.atlas053 22350 1293840262 1293840152
161790 group_alice.alice017 210 1293840254 1293840159
161791 group_lhcb.pltlhc15 108277 1293949235 1293840159
161792 group_atlas.sgmatlas 35349 1293840251 1293840160
(其中最後兩個字段是劃時代的時間)的倒數第二場這個命令:
161792 group_atlas.sgmatlas 35349 1293840251 1293840160
161790 group_alice.alice017 210 1293840254 1293840159
161789 group_atlas.atlas053 22350 1293840262 1293840152
161788 group_monitor.sgmops 4530 1293840320 1293840152
161791 group_lhcb.pltlhc15 108277 1293949235 1293840159
正如你所看到的,我用sorted()
,這是在2.4版推出,我怎麼可以重寫劇本V2.3,所以它確實是 一樣。 另外,我想時代時間轉換爲人類可讀的格式,所以產生的文件看起來像這樣:
161792 group_atlas.sgmatlas 35349 01/01/11 00:04:11 01/01/11 00:02:40
161790 group_alice.alice017 210 01/01/11 00:04:14 01/01/11 00:02:39
161789 group_atlas.atlas053 22350 01/01/11 00:04:22 01/01/11 00:02:32
我知道,這strftime("%d/%m/%y %H:%M:%S", gmtime())
可以用來時代時間轉換,但我不能我不知道如何將它應用於腳本以該格式重寫文件。
評論?忠告珍惜!
@馬克:更新
在某些情況下,出現時間當屬3600
,它是表示一個未竟的事業。我想打印中止而不是01/01/1970
這樣一行。所以,我改變了這樣的format_seconds_since_epoch()
:
def format_seconds_since_epoch(t):
if t == 3600:
return "aborted"
else:
return strftime("%d/%m/%y %H:%M:%S",datetime.fromtimestamp(t).timetuple())
它解決了這個問題。在這方面能做到最好嗎?乾杯!!
幾件小事情:1.OP的文件被標籤分隔而不是單個空格2.您需要比較倒數第二列,而不是第三列3.最好將列值轉換爲數字在比較之前,以防萬一某些值是2001年9月以前的時間:) – 2011-02-26 11:06:06