在Python中处理文件

问题描述 投票:0回答:1

各位编码员早上好。我有一个关于使用 Python 查找文件中特定行的问题。一种方法是使用 if line.startswith(word) 或使用 if not line.startswith(word) 然后继续。两者有什么区别?对于较大的文本程序,一个比另一个更好吗?我应该养成将来使用哪一个的习惯?例如:更好的处理速度,更少的组件负载。我已经在较小的程序上进行了测试,运行时几乎没有差异。

fhand = open('mbox-short.txt')
for line in fhand:
    line = line.rstrip()
    if line.startswith('From:'):
        print(line)

VS

fhand = open('mbox-short.txt')
for line in fhand:
    line = line.rstrip()
    if not line.startswith('From:'):
        continue
    print(line)

谢谢您的回答。

试运行:

import time
t0= time.time()
fhand = open('mbox-short.txt')
for line in fhand:
   line = line.rstrip()
   if line.startswith('From:'):
       print(line)
t1 = time.time() - t0
print ('Time Elapsed:',t1)

运行时间速度 1:已用时间:0.013382196426391602

运行时间速度 2:已用时间:0.0033702850341796875

运行时间速度 3:已用时间:0.0040471553802490234

import time
t0= time.time()
fhand = open('mbox-short.txt')
for line in fhand:
    line = line.rstrip()
    if not line.startswith('From:'):
        continue
    print(line)
t1 = time.time() - t0
print ('Time Elapsed:',t1)

运行时间速度1:已用时间:0.0037872791290283203

运行时间速度 2:已用时间:0.003139495849609375

运行时间速度 3:已用时间:0.0030825138092041016

python optimization text-processing
1个回答
0
投票

这两种风格在性能方面没有明显差异。

这是编码风格和可读性的问题。

在这个特定的示例中,我认为两种形式的代码都是完全可以理解的。

就个人而言,我更喜欢带有“继续”的变体。

这种编码风格可以称为“早期返回”(或者,我猜,在这种情况下,“早期继续”)。这个想法是,首先排除不相关的案例,然后处理相关的案例。请参阅这个软件工程问题,了解“提前返回”模式的讨论。

如果您尽早使用“继续”来忽略不相关的行,那么额外的好处是,在相关行上运行的代码会缩进少一级(它更靠近屏幕左侧,有助于可读性)。

© www.soinside.com 2019 - 2024. All rights reserved.