簡體   English   中英

使用 python 在循環中多次寫入文件

[英]Writting multiple times in a file in a loop using python

我在 python 中編寫大型矩陣,例如 (2^20, 2^20)。 為了解決這個問題,我的方法是將文件中的每個元素與各自的行和列一起寫入。

我試圖這樣解決它:

l = 20
j = 1
delt = -1
for x in range(0,2**l):
    for y in range(0,l):
        k = (y+1)%l
        if check_nth_bit(x,y) == 0:
            a = ([x,x,-j*h/2])
            with open("file.txt", "w") as f:
                f.write(str(a))
        else:
            b = ([x,x,j*h/2])
            with open("file.txt", "w") as f:
                f.write(str(b))

我所做的方式,只有最后一個元素被寫入文件中。 誰能幫我?

每次使用with open("file.txt", "w") as f:時,您都是在寫入模式下打開文件 - 特別是在覆蓋模式下。 每個值都被寫入文件,但每次循環時,都會擦除文件並重新開始寫入。

您可以通過在 append 模式下打開來避免這種情況,就像with open("file.txt", "a") as f:但是一遍又一遍地打開和關閉文件沒有多大意義(而且它在計算上非常昂貴;您的程序將變得非常慢。),為什么不把這個邏輯移到你的循環之外呢? 所以你只需要打開一次文件?

l = 20
j = 1
delt = -1
with open ("file.txt", "w") as f:
    for x in range(0,2**l):
        for y in range(0,l):
            k = (y+1)%l
            if check_nth_bit(x,y) == 0:
                a = ([x,x,-j*h/2])-
                f.write(str(a))
            else:
                b = ([x,x,j*h/2])-
                f.write(str(b))

暫無
暫無

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

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