iT邦幫忙

0

python 迴圈輸出txt檔

各位前輩好
在python中遇到for迴圈中print後需要將結果儲存至txt檔,但輸出至txt檔只會儲存最後一次的迴圈結果請問是我程式的哪方面有問題才能將所有內容儲存至txt檔 謝謝
程式的部分
list_float的內容是個列表 因為需要遍歷將列表內容逗號改空白及補上0

for i in list_float:
    
    print(i,end='00000\t' ,file=open('1013.txt', 'w'))

2 個回答

0
ccutmis
iT邦高手 4 級 ‧ 2019-10-15 23:54:28
最佳解答

可以改成下列寫法試試:

file=open('1013.txt','w')
file.close()
for i in list_float:
    ...
    print(i,end='00000\t' ,file=open('1013.txt', 'a'))

若是下列的寫法(原本的)

    print(i,end='00000\t' ,file=open('1013.txt', 'w'))

廻圈執行的時候每一圈就會把'1013.txt'清空並寫入當下那一列內容,所以執行完成後裡面只會有廻圈最後一次執行的那一列的內容...

看更多先前的回應...收起先前的回應...
a4761533 iT邦新手 5 級 ‧ 2019-10-15 23:57:09 檢舉

可以了 感謝你的回答我程式的部分還在學習 你的解答非常有幫助 謝謝

ccutmis iT邦高手 4 級 ‧ 2019-10-15 23:57:40 檢舉

不客氣~加油!

a4761533 iT邦新手 5 級 ‧ 2019-10-16 00:02:04 檢舉

我想請問一下 您的寫法
print(i,end='00000\t' ,file=open('1013.txt', 'a'))
請問為什麼需要'a' 這部分不太了解

ccutmis iT邦高手 4 級 ‧ 2019-10-16 00:09:12 檢舉

https://ithelp.ithome.com.tw/articles/10161708

那個是 file open 裡面的參數
以我們這邊的例子來說
file=open('1013.txt','w')
w是 新建檔案寫入(檔案可不存在,若存在則清空)這時你得到一個內容是空白的1013.txt

print(i,end='00000\t' ,file=open('1013.txt', 'a'))
然後跑廻圈的參數'a'是 資料附加到舊檔案原本內容的最後
所以會把每一行廻圈的內容寫到1013.txt裡

小魚 iT邦大師 1 級 ‧ 2019-10-16 07:59:58 檢舉

有時候別人給你程式碼,
你就要上網去查資料,
不要一直問這些基本的問題,
你一直問人家只會覺得你是伸手牌,
慢慢地就沒有人想回答你的問題了。

ccutmis iT邦高手 4 級 ‧ 2019-10-16 09:21:31 檢舉

小魚說的對。

不過這位python新同學我是覺得他還不錯,
有禮貌且提問很精確沒有拖泥帶水。

print()在python的用法是有各種奧妙,樓主這邊用到的方法我也是第一次看到^^" 所以不算虧啊,不過假如是要跑廻圈附加00000到每一行的結尾的話,我是會用下面的寫法來做

with open('source.txt') as f:
    list_float = f.readlines()
f.close()

file=open('new.txt','w')
for i in list_float:
    file.write(i.replace('\n','')+'00000\t\n')
file.close()

這樣的好處是不用頻繁的file open('ooo.txt','a')

說個提外話... print()也可以拿來寫出這樣的效果:

froce iT邦大師 1 級 ‧ 2019-10-16 12:49:19 檢舉
ccutmis iT邦高手 4 級 ‧ 2019-10-16 12:54:28 檢舉

froce 謝謝分享~ /images/emoticon/emoticon12.gif

a4761533 iT邦新手 5 級 ‧ 2019-10-16 14:07:00 檢舉

ccutmis 謝謝你的幫助及回答 我以前沒有寫程式的經驗所以也還在學習,我會再多找資料的(但其實網路上資料也不會像您解說的這麼詳細也不一定找的到資料)

a4761533 iT邦新手 5 級 ‧ 2019-10-16 14:09:43 檢舉

小魚大 謝謝你 我虛心領教 抱歉!

0
samuel24
iT邦新手 5 級 ‧ 2019-10-16 07:24:12

我個人會習慣用 f.write ,比較直觀,給你參考。

a4761533 iT邦新手 5 級 ‧ 2019-10-16 14:13:42 檢舉

感謝你提供的意見

froce iT邦大師 1 級 ‧ 2019-10-17 07:06:52 檢舉

我通常是把資料整理好後,f.writelines

我要發表回答

立即登入回答