我有一個函式可以將一組行中的資訊寫入 Python 中的 CSV 檔案。該函式應該將新行附加到檔案中,但是我發現有時它行為不端并將新行放置在 CSV 的單獨空間中(請以圖片為例)。
每當我手動重新格式化資料時,我都會再次洗掉所有空單元格,所以你知道。
希望有人能幫忙,謝謝!
def Logger():
fileName = myDict[Sub]
with open(fileName, 'a ', newline="") as file:
writer = csv.writer(file)
if file.tell() == 0:
writer.writerow(["Date", "Asset", "Fear", "Anger", "Anticipation", "Trust", "Surprise", "Sadness", "Disgust", "Joy",
"Positivity", "Negativity"])
writer.writerow([date, Sub, fear, anger, anticip, trust, surprise, sadness, disgust, joy, positivity, negativity])

uj5u.com熱心網友回復:
試試這個...
def Logger(col_one, col_two):
fileName = 'data.csv'
with open(fileName, 'a ') as file:
writer = csv.writer(file)
file.seek(0)
if file.read().strip() == '':
writer.writerow(["Date", "Asset"])
writer.writerow([col_one, col_two])
uj5u.com熱心網友回復:
起初我認為這是一個簡單的問題,即沒有尾隨換行符,并且新行被附加在同一行上,就在最后一行之后,但我可以看到它們之間看起來像一行的空列。
這整個附加的東西看起來很棘手。如果您不必使用 Python,而是可以使用命令列工具,我推薦GoCSV。
這是基于我模擬的螢屏截圖的示例檔案:
基礎檔案
Date,Asset,Fear,Anger,Anticipation,Trust,Surprise,Sadness,Disgust,Joy,Positivity,Negativity
Nov 1,5088,0.84,0.58,0.73,1.0,0.26,0.89,0.22,0.5,0.69,0.59
Nov 2,4580,0.0,0.88,0.7,0.71,0.57,0.78,0.2,0.22,0.21,0.17
Nov 3,2469,0.72,0.4,0.66,0.53,0.65,0.64,0.67,0.78,0.54,0.32,,,,,,,
我稱它為 base 是因為它是將增長的檔案,你可以看到它在最后一行有問題:所有這些額外的逗號(我不知道它們是如何到達那里的 ?????♂?)。
第一步是清理它,并修剪那些討厭的額外逗號:
% gocsv clean base.csv > tmp
% mv tmp > base.csv
現在base.csv看起來像:
Date,Asset,Fear,Anger,Anticipation,Trust,Surprise,Sadness,Disgust,Joy,Positivity,Negativity
Nov 1,5088,0.84,0.58,0.73,1.0,0.26,0.89,0.22,0.5,0.69,0.59
Nov 2,4580,0.0,0.88,0.7,0.71,0.57,0.78,0.2,0.22,0.21,0.17
Nov 3,2469,0.72,0.4,0.66,0.53,0.65,0.64,0.67,0.78,0.54,0.32
這是要附加的另一組資料sample2.csv:
Date,Asset,Fear,Anger,Anticipation,Trust,Surprise,Sadness,Disgust,Joy,Positivity,Negativity
Nov 4,6040,0.69,0.89,0.72,0.44,0.21,0.15,0.03,0.63,0.78,0.42
Nov 5,7726,0.72,0.12,0.95,0.6,0.88,0.1,0.43,1.0,1.0,0.68
Nov 6,9028,0.87,0.34,0.46,0.57,0.15,0.3,0.8,0.32,0.17,0.42
Nov 7,3544,0.16,0.9,0.37,0.8,0.67,0.0,0.11,0.72,0.93,0.35
GoCSV 的stack命令將完成這項作業:
% gocsv stack base.csv sample2.csv > tmp
% mv tmp base.csv
現在base.csv看起來像:
Date,Asset,Fear,Anger,Anticipation,Trust,Surprise,Sadness,Disgust,Joy,Positivity,Negativity
Nov 1,5088,0.84,0.58,0.73,1.0,0.26,0.89,0.22,0.5,0.69,0.59
Nov 2,4580,0.0,0.88,0.7,0.71,0.57,0.78,0.2,0.22,0.21,0.17
Nov 3,2469,0.72,0.4,0.66,0.53,0.65,0.64,0.67,0.78,0.54,0.32
Nov 4,6040,0.69,0.89,0.72,0.44,0.21,0.15,0.03,0.63,0.78,0.42
Nov 5,7726,0.72,0.12,0.95,0.6,0.88,0.1,0.43,1.0,1.0,0.68
Nov 6,9028,0.87,0.34,0.46,0.57,0.15,0.3,0.8,0.32,0.17,0.42
Nov 7,3544,0.16,0.9,0.37,0.8,0.67,0.0,0.11,0.72,0.93,0.35
這可以像這樣撰寫和簡化:
% gocsv clean base.csv > base
% gocsv clean sample.csv > sample
% gocsv stack base sample > base.csv
% rm base sample
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/350291.html
上一篇:讀取plink的輸出模型
