python编码问题:

所有使用python的都会遇到下面的问题:

Traceback (most recent call last):

File "amazon_test.py", line 30, in

print(s)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)

解决方法

首先,你要有个通用的环境:

locale保证

LANG=zh_CN.UTF-8

LC_CTYPE="en_US.UTF-8"

LC_NUMERIC="en_US.UTF-8"

LC_TIME="en_US.UTF-8"

LC_COLLATE="en_US.UTF-8"

LC_MONETARY="en_US.UTF-8"

LC_MESSAGES="en_US.UTF-8"

LC_PAPER="en_US.UTF-8"

LC_NAME="en_US.UTF-8"

LC_ADDRESS="en_US.UTF-8"

LC_TELEPHONE="en_US.UTF-8"

LC_MEASUREMENT="en_US.UTF-8"

LC_IDENTIFICATION="en_US.UTF-8"

LC_ALL=en_US.UTF-8

具体设置:

# ~/.bashrc中添加

LANG=zh_CN.UTF-8

LANGUAGE=zh_CN:zh:en_US:en

LC_ALL=en_US.UTF-8

py文件第一行一般为#!/usr/bin/env python

第二行# -*- coding: utf-8 -*- 或者# coding=utf-8

保证文件的编码为utf-8格式(有些人会把vim环境设置为gbk或者chinese,文件保存时可能会变成gbk格式,需要注意)

p.s. : vimrc设置推荐:

set encoding=utf-8 " 新创建文件格式为utf-8

set termencoding=utf-8 " 终端显示格式,把解析的字符用utf-8编码来进行显示和渲染终端屏幕

set fileencodings=utf-8,gb18030,gbk,cp936,gb2312 " 可以查看多种格式的文件

python2

解码输入流

读取文件

with open(file_path, 'r') as f:

for line in f:

line = line.decode('your_file_encoding', errors='ignore').strip()

标准输入流

for line in sys.stdin:

line = line.decode('your_file_encoding', errors='ignore').strip()

写某编码的文件

print >> sys.stdout, line.encode('gb18030', 'ignore')

# 或者用,推荐下面的方法

sys.stdout.write(line.encode('gb18030', 'ignore') + '\n')

python3

解码输入流

读取文件

with open(file_path, mode='r', encoding='gb18030', errors='ignore') as f:

for line in f: # line is unicode string

pass

标准输入流

import io

import sys

sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')

for line in sys.stdin:

pass

import sys

sys.stdin.reconfigure(encoding='utf-8')

for line in sys.stdin:

pass

编码输出

写文件

with open(file_output, encoding='your_dest_encoding', mode='w') as f:

f.write(line)

输出流

import sys

import io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

sys.stdout.write(line + '\n')

python输入流和输出流_python读写gbk、utf-8等输入输出流相关推荐

  1. java字节输出流怎么转码_字节/字符——输入/输出流

    一: 1.计算机如何存储中文的? 当前平台默认编码集 :GBK 一个中文两个字节 第一个字节:一定是负数 第二个字节:一般是负数,可能也会是正数,不会影响的结果. */ public class St ...

  2. java字符流输出流_JAVA语言之IO流字符串输入输出流

    本文主要向大家介绍了JAVA语言之IO流字符串输入输出流,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 概述 StringReader 字符输入流 和CharArrayReader类 ...

  3. python csv 中文乱码_python读写csv时中文乱码问题解决办法

    CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV ...

  4. python 清空文件夹_python读写文件

    文件读写 文件读写,是Python代码调用电脑文件的主要功能,能被用于读取和写入文本记录.音频片段.Excel文档.保存邮件以及任何保存在电脑上的东西. ①读取文件 首先,我们在桌面新建一个text文 ...

  5. python读取tsv文件_Python 读写 tsv

    Python操作csv和excel的教程随处可见,可惜我遇到的是tsv, 然后可搜到的资料屈指可数,在经历了一番努力之后终于找到了解决方案,顺手还研究了一波文件读取,写下来记录一下. 首先上成果,伸手 ...

  6. python 写入第二列_python读写Excel表格的实例代码(简单实用)

    这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...

  7. python写配置文件方法_Python读写配置文件的方法

    本文实例讲述了Python读写配置文件的方法.分享给大家供大家参考.具体分析如下: python 读写配置文件ConfigParser模块是python自带的读取配置文件的模块.通过他可以方便的读取配 ...

  8. python二进制写入文件_python读写二进制文件的方法

    本文实例讲述了python读写二进制文件的方法.分享给大家供大家参考.具体如下: 初学python,现在要读一个二进制文件,查找doc只发现 file提供了一个read和write函数,而且读写的都是 ...

  9. python读conf配置文件_python读写配置文件操作示例

    本文实例讲述了python读写配置文件操作.分享给大家供大家参考,具体如下: 在用编译型语言写程序的时候,很多时候用到配置文件,作为一个约定的规则,一般用 ini 文件作为配置文件,当然不是绝对的,也 ...

最新文章

  1. I.MX6 PLL5 clock hakcing
  2. Properties文件读取学习笔记
  3. Python之Pandas:利用pandas实现行数据添加,即将字典格式的数据,按照行数据,从头开始循环添加到dataframe中
  4. 洛谷 - P1989 无向图三元环计数(思维建图)
  5. sturts2标签判断多个条件
  6. python最新面试题_2018年最新Python面试题及答案
  7. 推翻自己和过往,重学自定义View
  8. javascript控制台_如何使用JavaScript控制台改善工作流程
  9. 使用raphael.js绘制中国地图
  10. wikioi 1294 全排列 dfs
  11. Shiro教程_2 Shiro+SpringBoot+Mysql+Redis(缓存)
  12. 【渝粤题库】陕西师范大学201841 比较教育学 作业(专升本)
  13. 明日立秋!秋季宝宝如何养肺?立秋养肺小妙招
  14. 微软拼音开启小鹤双拼
  15. 使用AhMyth入侵Android智能手机
  16. NYOJ1016(德莱联盟)(判断线段相交)
  17. ❤️❤️❤️Unity废柴看过来,手把手教你做植物大战僵尸(十四)—— 游戏胜利和失败界面
  18. 申请了雅虎邮箱的全新域名@yahoo.cn ID
  19. 股份有限公司按规定注销库存股时,对被注销库存股的账面余额超过面值总额的部分
  20. 有时候,感慨的人生~

热门文章

  1. 通过调色板(QPalette)将readonly为true的QLineEdit颜色设置为灰色
  2. 高中计算机计划,高中信息技术教学计划
  3. delimited mysql_在MySQL中存儲逗號分隔的數據
  4. IOS 6 之后 Required background modes
  5. layoutSubviews什么时候触发调用
  6. 实用代码---取得当前的年月日,当前的时分秒获得,周几和星期几获得
  7. c语言形参指针 实参数组,《C语言程序设计》中的指针形参和函数体中数组实参问题的教学研究.pdf...
  8. shell编写mysql启动脚本文件夹_linux 编写一个shell脚本文件,实现以下功能
  9. 什么?你竟然还没有用这几个chrome插件?
  10. [嵌入式][分享][交流]发布一个消息地图的模块