1

我有一个文件,它有大约 12 万行,每行如下所示:

0701648016480002020000002030300000200907242058CRLF

我想要完成的是在数据之前添加一个行号,这些数字应该有一个固定的长度。

这背后的想法是能够将此文件批量插入到 SQLServer 表中,然后对其执行某些操作,这些操作要求每一行都有一个唯一的标识符。我已经尝试在数据库端执行此操作,但我无法获得良好的性能(至少在 4 英尺以下,在 1 英尺以下是理想的)。

现在我正在尝试一个看起来像这样的python解决方案。

file=open('file.cas', 'r')
lines=file.readlines()
file.close()
text = ['%d %s' % (i, line) for i, line in enumerate(lines)]
output = open("output.cas","w")
output.writelines(str("".join(text)))
output.close()

我不知道这是否可行,但在我继续尝试新事物之前,它会帮助我了解它的性能和副作用,我还想用 C 来做,所以我有更好的内存控制。

用低级语言做这件事会有帮助吗?有谁知道更好的方法来做到这一点,我很确定它已经完成了,但我找不到任何东西。

谢谢

4

3 回答 3

4

哦,上帝,不,不要一次读完所有 1200 万行!如果你打算使用 Python,至少要这样做:

file = open('file.cas', 'r')
try:
    output = open('output.cas', 'w')
    try:
        output.writelines('%d %s' % tpl for tpl in enumerate(file))
    finally:
        output.close()
finally:
    file.close()

这使用了一个生成器表达式,该表达式一次运行一行处理文件。

于 2009-08-13T20:05:01.293 回答
2

你为什么不试试 cat -n ?

于 2009-08-13T21:02:05.757 回答
2

斯特凡诺是对的:

$ time cat -n file.cas > output.cas

使用时间,以便您可以看到它有多快。因为 cat 是纯 C 代码,所以它会比 python 快。

于 2009-08-13T21:04:47.793 回答