[英]appending dates by columns in a csv file in python
我有一個腳本,它遍歷給定路徑('C:\\ Users \\ Razvi \\ Desktop \\ italia')中的所有文件,並從名稱為“ cnt.csv”的每個文件中讀取行數,然后寫入在另一個名為“ counters.csv”的文件中,當前日期+文件夾名稱+在“ cnt.csv”中找到的行總和。
現在輸出文件(“ counters.csv”)如下所示:
30/9/2017
8dg5 5
8dg7 7
01/10/2017
8dg5 8
8dg7 10
其中名稱8dg5和8dg7是腳本在其中找到文件“ cnt.csv”的文件夾,數字5、7、8、10是每次我運行腳本時在csv文件中找到的行總和,並且顯然我運行腳本的日期,每次都會附加。
現在我想要的是在csv中寫那些日期,以某種方式附加在列而不是行上,如下所示:
30/9/2017 01/10/2017
8dg5 5 8dg5 8
8dg7 7 8dg7 10
這是代碼:
import re
import os
from datetime import datetime
#italia =r'C:\Users\timraion\Desktop\italia'
italia =r'C:\Users\Razvi\Desktop\italia'
file = open(r'C:\Users\Razvi\Desktop\counters.csv', 'a')
now=datetime.now()
dd=str(now.day)
mm=str(now.month)
yyyy=str(now.year)
date=(dd + "/" + mm + "/" + yyyy)
file.write(date + '\n')
for filename in os.listdir(italia):
infilename = os.path.join(italia, filename)
for files in os.listdir(infilename):
if files.endswith("cnt.csv"):
result=os.path.join(infilename,"cnt.csv")
print(result)
infilename2 = os.path.join(infilename, files)
lines = 0
for line in open(infilename2):
lines += 1
file = open(r'C:\Users\Razvi\Desktop\counters.csv', 'a')
file.write(str(filename) +","+ str(lines)+"\n" )
file.close()
謝謝!
如果要將新條目添加為列而不是下一行,則每次都必須讀入counters.csv
文件,追加列並重寫。
import os
from datetime import datetime
import csv
italia =r'C:\Users\Razvi\Desktop\italia'
counts = []
for filename in os.listdir(italia):
infilename = os.path.join(italia, filename)
for files in os.listdir(infilename):
if files.endswith("cnt.csv"):
result=os.path.join(infilename,"cnt.csv")
print(result)
infilename2 = os.path.join(infilename, files)
lines = 0
for line in open(infilename2):
lines += 1
counts.append((filename, lines)) # save the filename and count for later
if os.path.exists(r'C:\Users\Razvi\Desktop\counters.csv'):
with open(r'C:\Users\Razvi\Desktop\counters.csv', 'r') as csvfile:
counters = [row for row in csv.reader(csvfile)] # read the csv file
else:
counters = [[]]
now=datetime.now()
# Add the date and a blank cell to the first row
counters[0].append('{}/{}/{}'.format(now.day, now.month, now.year))
counters[0].append('')
for i, count in enumerate(counts):
if i + 1 == len(counters): # check if we need to add a row
counters.append(['']*(len(counters[0])-2))
while len(counters[i+1]) < len(counters[0]) - 2:
counters[i+1].append('') # ensure there are enough columns in the row we're on
counters[i+1].extend(count) # Add the count info as two new cells
with open(r'C:\Users\Razvi\Desktop\counters.csv', 'w') as csvfile:
writer = csv.writer(csvfile) # write the new csv file
for row in counters:
writer.writerow(row)
另一個要注意的是, file
是Python中的內置函數,因此您不應使用該名稱作為變量,因為在代碼中可能會發生意料之外的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.