0
我是一個noobie。Python CSV:我可以用'open'而不是兩個來做到這一點嗎?
我寫了幾個腳本來修改我使用的CSV文件。
腳本:
1)改變CSV文件的標題那麼保存到一個新的CSV文件,。
2.)加載該CSV文件,並使用DictWriter更改選擇列的順序。
from tkinter import *
from tkinter import filedialog
import os
import csv
root = Tk()
fileName = filedialog.askopenfilename(filetypes=(("Nimble CSV files", "*.csv"),("All files", "*.*")))
outputFileName = os.path.splitext(fileName)[0] + "_deleteme.csv" #my temp file
forUpload = os.path.splitext(fileName)[0] + "_forupload.csv"
#Open the file - change the header then save the file
with open(fileName, 'r', newline='') as infile, open(outputFileName, 'w', newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile, delimiter=',', lineterminator='\n')
row1 = next(reader)
#new header names
row1[0] = 'firstname'
row1[1] = 'lastname'
row1[4] = 'phone'
row1[5] = 'email'
row1[11] = 'address'
row1[21] = 'website'
#write the temporary CSV file
writer.writerow(row1)
for row in reader:
writer.writerow(row)
#Open the temporary CSV file - rearrange some columns
with open(outputFileName, 'r', newline='') as dInFile, open(forUpload, 'w', newline='') as dOutFile:
fieldnames = ['email', 'title', 'firstname', 'lastname', 'company', 'phone', 'website', 'address', 'twitter']
dWriter = csv.DictWriter(dOutFile, restval='', extrasaction='ignore', fieldnames=fieldnames, lineterminator='\n')
dWriter.writeheader()
for row in csv.DictReader(dInFile):
dWriter.writerow(row)
我的問題是:有沒有更有效的方法來做到這一點?
看來我不應該做一個臨時的CSV文件(「_deleteme.csv」)然後我刪除。
我認爲製作臨時CSV文件是一個新手舉動 - 有沒有辦法做到這一切與「開放」的聲明?
感謝您的任何幫助,這是不勝感激。
--Luke
謝謝! –