为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 CSV 中添加多行,但每次运行脚本时都覆盖?

如何在 CSV 中添加多行,但每次运行脚本时都覆盖?

慕尼黑5688855 2021-10-19 16:18:04
所以我正在运行一个脚本,它为 60 个不同的项目提取数据,为了方便使用,我想将此数据存储在一个 csv 文件中。每次运行脚本时,我都想存储所有 60 个项目,然后覆盖所有以前的数据。当我现在使用 'w' 参数运行它时,它只添加它提取的最后一个项目。如果我将其更改为“a”,它将添加所有 60 个项目,但是当我接下来运行它时它不会覆盖。任何帮助表示赞赏!import os, random, csvvin = '1600'n = 1for path, subdirs, files in os.walk(r'\\sorion-app01\Shares\ProcessData\Broadcasts\Good'):   for filename in files:        if not 'XX' or not '0X' or not 'XXXXXX' or not '000X' in filename:            f = os.path.join(path, filename)            vins = str(f)[50:67]            if not 'X' in vins[13:17]:                vin = int(vins[13:17])                if vin > 1600:                     from sys import platform                    import pyodbc                    if platform == "linux" or platform == "linux2":                        print("linux")                        driver = 'mydriver.so'                        conn = pyodbc.connect(                            driver = driver,                            TDS_Version = '7.2', # Use for                            server = 'aserver',                            port = 1433,                            database = 'TraceDB',                            uid = 'EXTUser',                            pwd = 'EXTPass!')                    elif platform == "win32":                        #print("Win32")                        conn = pyodbc.connect('DRIVER={SQL Server};SERVER=database')                   #pull the data here#                    with open('file.csv', 'w', newline='') as csvfile:                        filewriter = csv.writer(csvfile, delimiter=',',                                                quotechar='|', quoting=csv.QUOTE_MINIMAL, lineterminator = '\n',)                        header = [('column1'), ('column1'), ('column2'), ('column3'), ('column4'), ('column5')]                        if not csvfile:                            filewriter.writeheader(header)                        filewriter.writerow([data, data2, data3, data4, data5, data6])                        n=n+1
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

这是因为您每次循环都要重新打开文件;你想在循环之前打开它并在循环之后关闭它。


查看完整回答
反对 回复 2021-10-19
?
临摹微笑

TA贡献1982条经验 获得超2个赞

在代码的最开始将其覆盖为空文件对您有用吗?


import os, random, csv


with open("file.csv", "w") as my_empty_csv:   

         pass 



vin = '1600' n = 1


[...]

最好的事物!


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信