Windows下python3生成UTF8的CSV文件和sha256sum踩坑记录
CSV的坑
在Ubuntu下是简单的写入完事
import csv
...
with open(filename, 'w') as output:
f = csv.writer(output)
f.writerow(results[0].keys())
.在win7下, 用msys2环境执行同一个python脚本, 发现生成的csv有两个问题: 1)有空行, 2)编码变成了GB2312
关于空行的问题, 百度的结果都是open(filename, 'wb')来解决, 但是在python3下会报
TypeError: a bytes-like object is required, not 'str'
.最终在stackoverflow上找到答案是python3的csv处理改了, 用binary时不能用str, https://stackoverflow.com/questions/35100280/python3-csv-writerows-typeerror-str-does-not-support-the-buffer-interface
解决办法是用 newline=''
with open(filename, "w", newline="")
.空行问题解决了, 然后是编码问题
百度上那种在写入时实时转换编码的方案肯定是有问题的, 最终找到的解决办法是使用unicodecsv替换csv, 然后writer里带上参数 encoding='utf-8'
import unicodecsv as csv
...
f = csv.writer(output, encoding='utf-8')
.但是又报了TypeError错误
TypeError: a bytes-like object is required, not 'str'
咦这不是刚解决过吗, 看了下unicodecsv的使用说明 https://pypi.org/project/unicodecsv/0.14.1/ 这货要用binary模式打开文件, 所以要改为
with open(filename, 'wb') as output:
.于是那个newline=''的参数也不需要了.
sha256sum的坑
在win7下, sha256sum的结果会在文件名前面默认加星号, 而在ubuntu下, 默认不加星号, 关于星号的解释是这样的
The sums are computed as described in FIPS-180-2. When checking, the input
should be a former output of this program. The default mode is to print a
line with checksum, a space, a character indicating input mode ('*' for binary,
' ' for text or where binary is insignificant), and name for each FILE.
看起来可以用-t参数强制指定使用text格式, 这样前面就不会出现星号了, 但是对结果会不会有影响呢? 测试了一个windows下创建的文本文件
Milton@ MSYS /d/
$ sha256sum -t win_text.txt
77a6b0ba40dd08f35c056386a248c0aab2de7fec0b1a2865cd41d09842147db5 win_text.txt Milton@ MSYS /d/
$ sha256sum -b win_text.txt
77a6b0ba40dd08f35c056386a248c0aab2de7fec0b1a2865cd41d09842147db5 *win_text.txt
.以及一个二进制文件
Milton@ MSYS /d
$ sha256sum -t 2018-12-31_2.zip
86dd42cae6b42420b60b8d35bd6168732e974c44a812486fdbbe5131b23dce79 2018-12-31_2.zip Milton@ MSYS /d
$ sha256sum -b 2018-12-31_2.zip
86dd42cae6b42420b60b8d35bd6168732e974c44a812486fdbbe5131b23dce79 *2018-12-31_2.zip
.看来也没有影响, 所以就在windows下增加-t参数避免输出星号吧
Windows下python3生成UTF8的CSV文件和sha256sum踩坑记录的更多相关文章
- 使用Windows下的git工具往github上传代码 踩坑记录
使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...
- Docker+STF在ubuntu下测试环境搭建(详细搭建步骤及踩坑记录)
一.什么是OpenSTF? STF又称OpenSTF,它是一个手机设备管理平台,可以对手机进行远程管理.调试.远程手机桌面监控等操作.这个系统类似于目前很流行的云测服务比如Testin,虽然网页上提供 ...
- windows下python3 使用cx_Oracle,xlrd插件进行excel数据清洗录入
我们在做数据分析,清洗的过程中,很多时候会面对各种各样的数据源,要针对不同的数据源进行清洗,入库的工作.当然python这个语言,我比较喜欢,开发效率高,基本上怎么写都能运行,而且安装配置简单,基本上 ...
- windows下python3.6 32bit 安装django
在Windows下python3.6安装Django1.11.3 1.首先下载地址:https://pypi.python.org/pypi/Django/1.11.3 pip install dja ...
- MAC 下 Excel打开UTF-8格式的文件乱码
为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头.这作为一个”特征符”或”字节顺序标记(byte-o ...
- windows下python3.6安装pycryto or crypto or pycryptodome与使用
pycrypto,pycrytodome和crypto是一个东西,在很久以前,crypto在python上面的名字是pycrypto它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库: w ...
- 108.生成和下载csv文件
生成CSV文件 有时候我们做的网站,需要将一些数据,生成一个csv文件返回浏览器,并且是作为附件的形式下载下来. 生成小的csv文件: 生成一个小的csv文件,我们用Python内置的csv模块来处理 ...
- Windows下python3登陆和操作linux服务器
一.环境准备 python3远程连接需要用到pycrytodome和paramiko库,其中后者依赖前者,所以按照顺序来安装 1. 安装pycrytodome 1 pip install pycryt ...
- Spring Boot下的一种导出CSV文件的代码框架
1.前言 CSV,逗号分隔值(Comma-Separated Values),即为逗号分隔的文本文件.如果值中含有逗号.换行符.制表符(Tab).单引号及双引号,则需要用双引号括起来:如果值中包含 ...
随机推荐
- TF:TF分类问题之MNIST手写50000数据集实现87.4%准确率识别:SGD法+softmax法+cross_entropy法—Jason niu
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # number 1 to 10 ...
- 比特币源码分析--C++11和boost库的应用
比特币源码分析--C++11和boost库的应用 我们先停下探索比特币源码的步伐,来分析一下C++11和boost库在比特币源码中的应用.比特币是一个纯C++编写的项目,用到了C++11和bo ...
- VC9、VC11、VC14、VC15库 32位 64位 免费下载
VC9.VC11.VC14.VC15库 32位 64位 免费下载 更新版本的PHP是用VC11,VC14或VC15(分别为Visual Studio 2012,2015或2017编译器)构建的,并且包 ...
- Linux学习之日志管理(二十一)
Linux学习之日志管理 目录 日志管理 日志服务 rsyslogd的新特点 启动日志服务 常见日志的作用 日志文件的一般格式 rsyslogd日志服务 /etc/rsyslog.conf配置文件 服 ...
- vsftpd中配置文件详解
在vsftp服务器中,配置文件/etc/vsftpd/vsftpd.conf文件是配置的核心内容,其具体的配置信息详细情况如下: 1.默认配置: 1>允许匿名用户和本地用户登陆. anonymo ...
- Java设计模式从精通到入门四 工厂方法模式
工厂方法模式 属于23中设计模式中创建型类型. 核心思想:工厂提供创建对象的接口,由子类决定实例化哪一个子类. 来源 设计模式之禅中的例子,女娲造人,通过八卦炉来进行造人,没有烧熟的为白人,烧太熟 ...
- tar 打包压缩
tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...
- Xamarin SQLite教程数据库访问与生成
Xamarin SQLite教程数据库访问与生成 在本教程中,我们将讲解如何开发SQLite相关的App.在编写程序前,首先需要做一些准备工作,如了解Xamarin数据库访问方式,添加引用,构建使用库 ...
- Windows 账户名及机器名相关问题记录
问题 1 背景:因为部门调动,需要接手同事的 PC.相关工具配置好之后,通过"控制面板->用户帐户和家庭安全->用户帐户->管理帐户->更改帐户->重命名帐户& ...
- 前面的内容 也是要去掉白名单 和 8.8.8.8这种非问题IP的 高风险 么? (目前我们没有获取客户的中风险、低风险数据,可以处理掉高风险)
前面的内容 也是要去掉白名单 和 8.8.8.8这种非问题IP的 高风险 么? (目前我们没有获取客户的中风险.低风险数据,可以处理掉高风险) == 整体把关.不清楚细节,所以只能从整体决策.做 ...