我有寫用戶名+姓氏+分數在excel文件中的代碼。但我希望它具有標題,例如第一行中的「姓名」「姓氏」和「分數」。然後每次代碼重新啓動時,我都希望新數據存儲在這些標題下的新列中。將字符串寫入一個新行
回答
您需要檢測您打開的文件是否已經有一行或多行寫入到它之前。執行此操作的簡單方法是在以附加模式打開文件後,調用文件上的tell
方法。 tell
將報告文件中的當前位置,這將在追加模式下結束。如果位置爲0
,則只需要寫入標題,因爲這表示文件爲空。
if form == 'a': #if form entered is a
with open ('classa.csv','a',newline='') as keerthan:
foo = csv.writer(keerthan,delimiter=',',)
if keerthan.tell() == 0: # add this test!
bar = ['Name', 'Surname', 'Score']
foo.writerow(bar)
bar = [[user,surname, score]]
foo.writerows(bar)
另一件事(無關的文件頭的問題):你真的應該避免不同if
語句之間重複這麼多的代碼。通常,您可以重複使用相同的邏輯,只需使用不同的值。這裏是你如何可以打開if
以上爲代碼的通用位,可以用於所有三種形式:
filename = "class{}".format(form) # use string formatting to get the right filename
with open (filename,'a',newline='') as keerthan: # open the file using a variable name
foo = csv.writer(keerthan,delimiter=',',)
if keerthan.tell() == 0:
bar = ['Name', 'Surname', 'Score']
foo.writerow(bar)
bar = [[user,surname, score]]
foo.writerows(bar)
你或許可以做您的問與答& A碼類似的東西,有了答案和arithmatic運營商被存儲在變量中。
謝謝你的回覆。現在我明白如何清理我的工作^^。感謝您的幫助,但對於標題部分,我輸入了您的建議,但出現錯誤。第83行,在
我檢查了excel文件,標題似乎在那裏,但由於我有這樣的錯誤,我不認爲我的數據相應地存儲在例如名稱+姓氏+分數。 – ImYu 2014-12-07 20:32:01
嗯,那個錯誤表明文件'keerthan'在你調用'tell'之前已經關閉了。你確定你的代碼縮進了嗎? 'tell()'調用需要在'with open(...)as keerthan'行後面的塊的一部分進行縮進。一個'with'語句在塊結束時自動關閉文件。 – Blckknght 2014-12-07 23:03:23
- 1. 將一個字符串寫入文件
- 2. 將多個字符串寫入文件並添加新行
- 3. 將任意多個字符串寫入一個文件行
- 4. 每次將新字符串寫入一個文件中
- 5. 字符串不會寫入新行
- 6. 將字符串中所有單詞的第一個字母寫入新字符
- 7. 將字符串寫入SKNode
- 8. Java:將一個字符串寫入一個JPG文件
- 9. 將一個數組的內容寫入一個字符串
- 10. 將一個Tokenized字符串寫入一個文本文件?
- 11. 在一個字符串中寫入html
- 12. c將字符串寫入文件中,逐行寫入
- 13. 將文件內容寫入新文件只寫入字符串的一半
- 14. 將單個字符串寫入新文件(SML)
- 15. 將幾個字符串寫入一個xml文件vb.net
- 16. 如何將五個字符串寫入一個文件
- 17. Arduino的寫入字符串到串行
- 18. 將字符串寫入字符指針時的內存行爲
- 19. 將字典或字符串寫入XML
- 20. Mxnet -js-將字節寫入字符串
- 21. TagLib:將字符串寫入RemixedBy字段
- 22. Python將字符串的一部分寫入csv行
- 23. 將字符串寫入文件的最後一行,Python
- 24. 提取字符串並寫入一個新文件
- 25. 將一串字符串加入到單個字符串中
- 26. Java - 將字符串逐行寫入文件vs單行/無法將字符串轉換爲字符串[]
- 27. 字符串寫入
- 28. 將字符串寫入超過4095個字符的文件
- 29. 將HTML寫入字符串,合併字母和字符串
- 30. 將字符從一個字符串讀入一個數組
請使用縮進來重新發布您的代碼。鑑於縮進在Python中的重要性,我們只能猜測代碼的原意。 – kdopen 2014-12-07 17:43:21
@kdopen抱歉,我不知道如何以確切的方式發佈它,所以我認爲你只需要使所有內容符合文本。現在修復縮進。 – ImYu 2014-12-07 18:07:04