在python的csv文件中按列附加日期

2024-06-06 17:11:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它遍历给定路径('C:\Users\Razvi\Desktop\italia')中的所有文件,并读取每个文件中的行数cnt.csv文件“然后它写入另一个名为”计数器.csv“当前日期+文件夹名称+在中找到的行的总和”cnt.csv文件". 你知道吗

现在输出文件(“计数器.csv)如下所示:

30/9/2017   
8dg5    5
8dg7    7

01/10/2017  
8dg5    8
8dg7    10

其中名称8dg5和8dg7是脚本找到文件的文件夹“cnt.csv文件“A和数字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()

谢谢!你知道吗


Tags: 文件csvimport脚本datetimeosusersnow
1条回答
网友
1楼 · 发布于 2024-06-06 17:11:26

如果您想将新条目添加为列而不是进一步向下的行,那么每次都必须读入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中的一个内置函数,因此您不应该使用该名称作为变量,因为在代码的更底层可能会发生意外的事情。你知道吗

相关问题 更多 >