When I use Python's csv.DictWriter.writerows on Windows, empty newlines are added between rows. How do I stop that? The code works fine on Linux.
In Python 2: Open the file in binary mode, always; csv.DictWriter() writes \r\n line endings:
with open(filename, 'ab') as outputfile:
    writer = csv.DictWriter(outputfile, fieldnames)
From the csv.writer() documentation:
If csvfile is a file object, it must be opened with the ‘b’ flag on platforms where that makes a difference.
In Python 3: Open the file with newline='' so csv.DictWriter() can control the newlines written without translation:
with open(filename, 'a', newline='') as outputfile:
    writer = csv.DictWriter(outputfile, fieldnames)
Again, quoting the relevant csv.writer() documenation:
If csvfile is a file object, it should be opened with
newline=''[ ... ]
If
newline=''is not specified, newlines embedded inside quoted fields will not be interpreted correctly, and on platforms that use\r\nlinendings on write an extra\rwill be added. It should always be safe to specifynewline='', since the csv module does its own (universal) newline handling.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With