使用Python3生成CSV文件遇到的问题(空行/乱码)

注意,本文是 Python3

空行问题

Python 3 中如果要防止空行,需要在open的时候加上 newline="" 这个参数,示例代码如下:

# Python 2
with open('/pythonwork/thefile_subset11.csv', 'wb') as outfile:
    writer = csv.writer(outfile)

# Python 3
with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
    writer = csv.writer(outfile)

具体可以点这里看

乱码问题

Windows系统打开文件的时候需要读取文件的前几个字符来确认编码,如果没找到那么就是乱码(我也很无奈)

好在,如果我们在Windows下面生成文件,它会自动加上这个确认编码,我们不用出现乱码问题

但是,如果我们使用 Linux/Unix 生成的文件,想要在Windows上面打开并且不乱码,我们就要显试的写入那几个确认编码的字符。

file.write(codecs.BOM_UTF8)

那么那个标志编码到底长什么样呢,这样:
使用Python3生成CSV文件遇到的问题(空行/乱码)_第1张图片
直接看示例代码:


# 先给文件写一个Windows系统用来识别编码的头
with open("a12.csv","wb") as datacsv:
    datacsv.write(codecs.BOM_UTF8)

# 使用`append`模式打开文件,继续写入
with open("a12.csv","a") as datacsv:
    # 定义一个 csv writer
    csvwriter = csv.writer(datacsv, dialect='excel')
    # 写入一行
    csvwriter.writerow(["A", "B"])

结论

Windows真是蛋疼

你可能感兴趣的:(python3)