【问题标题】:Create new CSV first iteration and append in next iterations创建新的 CSV 第一次迭代并在下一次迭代中追加
【发布时间】:2020-10-14 09:56:53
【问题描述】:

现在我的代码总是附加到一个文件中,但是在 for 循环的第一次迭代中我需要创建一个空文件。 我的代码是这样的

import csv, pyodbc
MDBList = ['C:/Users/vignesh.rajendran/Desktop/Test-results_new.mdb','C:\SVN\CKMotorData\Classes\Test-results.mdb']
DRV = '{Microsoft Access Driver (*.mdb)}'
PWD = ''
def ReadMDB (MDBList):
    for path in MDBList:
        MDB = path
        con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
        cur = con.cursor() 
        SQL = 'SELECT * FROM CK_Test_Results;' # your query goes here
        rows = cur.execute(SQL).fetchall()
        cur.close(); con.close()
        with open("MDBcombined.csv", 'a', newline='') as fou:
            csv_writer = csv.writer(fou) # default field-delimiter is ","
            csv_writer.writerows(rows)

【问题讨论】:

    标签: python python-3.x csv append


    【解决方案1】:

    我认为你应该在写入模式下打开它,而不是在写入模式下以追加模式打开它会创建一个文件with open("MDBcombined.csv", 'w+', newline='') 可能会有帮助。

    【讨论】:

    • 我只需要追加模式,因为我必须在列表中追加所有内容
    【解决方案2】:

    实现此目的的一种简单方法是利用enumerate() 函数(以便在for 循环中拥有一个计数器):

    import csv, pyodbc
    MDBList = ['C:/Users/vignesh.rajendran/Desktop/Test-results_new.mdb','C:\SVN\CKMotorData\Classes\Test-results.mdb']
    DRV = '{Microsoft Access Driver (*.mdb)}'
    PWD = ''
    def ReadMDB (MDBList):
        for counter,path in enumerate(MDBList):
            if counter == 0:
                ###Create empty file in the first iteration of the loop
                with open('YOUR-AWESOME-NEW-FILE.csv', 'w') as fp: 
                pass
    ...
    

    我编写上面的代码只是为了向您提及如何根据迭代(使用if 语句和counter)在for 循环中执行一次命令,因为这似乎是您的问题,但是您可以采取的另一种方法是在 for 循环之外创建空文件,并且仅使用 for 循环将行附加到文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 2014-11-25
      • 2014-06-30
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      相关资源
      最近更新 更多