你需要了解这条Python吗

2024-04-25 22:31:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我实际上是在处理一个文本日志文件,使用下面的python代码。即使在多线到达EOF之后,它也会继续运行。你知道吗

myfile = open("560A_HL_Japan_02_04_2016.txt", 'r')
mod_myfile = open("560A_HL_Japan_02_04_2016_modified.txt", "wb")
mfl = myfile.readlines()
mstring=''
for mline in mfl:
    mli = mline.split()
    for l in range(len(mli)):
        if l >= 2:                      #second object
            mstring += mli[l]+' '
    mstring += '\n'
    mod_myfile.write(mstring)
mod_myfile.close()

如果我稍微修改一下下面的代码。它执行起来没有任何问题

myfile = open("560A_HL_Japan_02_04_2016.txt", 'r')
mod_myfile = open("560A_HL_Japan_02_04_2016_modified.txt", "wb")
mfl = myfile.readlines()
for mline in mfl:
    mli = mline.split()
    for l in range(len(mli)):
        if l == 2:                      #second object
            mstring = mli[l]+' '
        elif l > 2:
            mstring += mli[l]+' '
    mstring += '\n'
    mod_myfile.write(mstring)
 mod_myfile.close()

Tags: 代码intxtmodforopenmyfilehl
1条回答
网友
1楼 · 发布于 2024-04-25 22:31:01

在第一个示例中,将mstring初始化为循环外的空字符串:

mstring = ''

然后在循环中不断添加到mstring

mstring += mli[l]+' '

但是mstring永远不会重新初始化,所以它会越来越大,所以代码执行的时间会越来越长。你知道吗

在第二个示例中,每当l等于2时,就会重置mstring

if l == 2:                      #second object
    mstring = mli[l]+' '

因为mstring经常被重置,所以第二个示例的性能更好。你知道吗

其他一些观察结果:

在所有Python版本中,使用+=添加字符串并不能保证提供最佳性能。考虑构建一个列表,并在完成后调用“”join()。你知道吗

不要使用l作为变量名,在某些字体中它看起来像1。你知道吗

相关问题 更多 >