【问题标题】:finding line in very big file end with loop(probably)在非常大的文件中查找以循环结尾的行(可能)
【发布时间】:2021-04-01 11:25:13
【问题描述】:

我有两个包含数百万行的大文件(644g 和 23 gb)。在我的计算中,在创建这些文件之前,这是因为我的计算机在 11 秒内检查较小的文件,而在 5 分钟内检查较大的文件。这些行中的每一行都有一个字符序列,随后的每一行都是这样的。当我在这个文件中搜索给定的行时,搜索时间比我想象的要长得多,而且是无穷无尽的。我的印象是我的“for”函数正在循环。我想知道是否不在文件末尾添加一行,例如“它结束了”并添加到代码中,如果它发现“它结束了”它应该做其他事情。 我的部分代码:

    if licznik > 2:
        for line in b:
            if not line.startswith(number): continue 
            play_max()
    elif licznik = 0:
        for line in a:
            if not line.startswith(number): continue 
            play_max()

我还想补充一点,如果在文件中找不到行,它会执行“play_one()”

IDK 也许这可以是 asnwear?:

elif licznik == 0:
    for line in a:
        if not line.startswith(hasz):
            play_one()
        play_max()

【问题讨论】:

    标签: python database loops file while-loop


    【解决方案1】:

    现在 while 循环永远不会停止,因为它总是 True。文件完成后,您需要一些东西来阻止它。对于play_one() 的补充,我假设play_max() 还包含一些会破坏此while 循环或停止脚本的内容。

    end_of_file = False
    while not end_of_file:
        if licznik > 2:
            for line in b:
                if not line.startswith(number): continue 
                play_max()
            end_of_file = True
            play_one()
        elif licznik == 0:
            for line in a:
                if not line.startswith(number): continue 
                play_max()
            end_of_file = True
            play_one()
    

    elif licznik = 0 也应该是 elif licznik == 0

    【讨论】:

    • 我想我需要一些东西而不是继续。我只需要检查文件中的“数字”,找到时执行:play_max(),未找到时执行:play_one() while 循环可以删除
    • 那么你的问题和你的例子都不清楚。为什么不直接做类似if number in b: play_max(); else: play_one() 的事情?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2015-03-23
    相关资源
    最近更新 更多