csv.write skipping lines when writing to csv

后端 未结 5 1465
旧巷少年郎
旧巷少年郎 2021-01-01 11:50

I am trying to write to a csv file via the following

file = open(\'P:\\test.csv\', \'a\') 

fieldnames = (\'ItemID\', \'Factor\', \'FixedAmount\')
wr = csv.D         


        
相关标签:
5条回答
  • 2021-01-01 11:54

    Could it be that you are opening the output file in append mode?

    file = open('P:\test.csv', 'a') 
    #                           ^
    

    Instead of write mode? If you run the program several times, the output from every run will be in that file...

    0 讨论(0)
  • 2021-01-01 11:54

    You need to pass an additional parameter to the 'open()' function:

    file = open('P:\test.csv', 'a', newline='')
    

    This will keep it from skipping lines.

    0 讨论(0)
  • 2021-01-01 12:03

    I had this problem and it was because I was using \n\r. I changed to \n and it is working now.

    0 讨论(0)
  • 2021-01-01 12:08

    Solution is to specify the "lineterminator" parameter in the constructor:

    file = open('P:\test.csv', 'w')
    
    fields = ('ItemID', 'Factor', 'FixedAmount')
    wr = csv.DictWriter(file, fieldnames=fields, lineterminator = '\n')
    
    wr.writeheader()
    wr.writerow({'ItemID':1, 'Factor': 2, 'FixedAmount':3})
    file.close()
    
    0 讨论(0)
  • 2021-01-01 12:21

    Twenty quatloos says you're running under windows (well, a hundred, given that your file is called P:\test.csv). You're probably getting extra \rs.

    [edit]

    Okay, since using binary mode causes other problems, how about this:

    file = open('P:\test.csv', 'w', newline='')
    
    0 讨论(0)
提交回复
热议问题