簡體   English   中英

python 中的真循環在不等待條件變為真的情況下中斷

[英]While true loop in python breaks without waiting for condition to become true

我正在嘗試在 python 中運行一個while true的循環,以檢查我想要的單詞是否與我擁有的 dataframe 的特定單元格中的單詞相同。 我嘗試了兩種方式。 第一個如下:

        while True:
            try:
                df1 = pd.read_csv(io.StringIO(dfs[4].to_csv(index=False)), skiprows=1, header=[0,1])
                c = df1.iat[1,3]
                print(c)
                if (c == "Margaret"):
                    df1.to_csv("break.csv", mode='a', header=False)
                    print("Margaret found")
                break
            except Exception as e:
                print("waiting...")
                continue
        break

但是當該值不可用時,它不會再試一次,而是無休止地打印“等待...”。

然后我嘗試如下:

        while True:
            try:
                df1 = pd.read_csv(io.StringIO(dfs[4].to_csv(index=False)), skiprows=1, header=[0,1])
                c = df1.iat[1,3]
                print(c)
                if (c == "Margaret"):
                    df1.to_csv("break.csv", mode='a', header=False)
                    print("Margaret found")
                break
            except:
                if c:
                    print("waiting...")
                    c = False
                continue

但是在這里,當值不可用時,它不會再次嘗試,而是自動跳到代碼的下一部分,甚至不打印“等待...”。 請建議我如何修改代碼。 我是編碼的初學者。 因此,如果以簡單的方式解釋,將非常感謝。 TIA

有一些事情要做:

  • 縮進中斷,所以它在 if 里面
  • 您一遍又一遍地讀取相同的數據,因此刪除 while 循環,因為您可能已經有一個更新數據。

最終代碼:

try:
    df1 = pd.read_csv(io.StringIO(dfs[4].to_csv(index=False)), skiprows=1, header=[0,1])
    c = df1.iat[1,3]
    print(c)
    if (c == "Margaret"):
        df1.to_csv("break.csv", mode='a', header=False)
        print("Margaret found")
        break
except Exception as e:
    print("waiting...")
    continue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM