复制代码 代码如下:

import os

import codecs

filenames=os.listdir(os.getcwd())

out=file("name.txt","w")

for filename in filenames:

out.write(filename.decode("gb2312").encode("utf-8"))

out.close()

将执行文件的当前目录及文件名写入到name.txt文件中,以utf-8格式保存

如果采用ANSI编码保存,用如下代码写入即可:

复制代码 代码如下:

out.write(filename)

打开文件并写入

引用codecs模块,对该模块目前不了解。在此记录下方法,有空掌握该模块功能及用法。

复制代码 代码如下:

import codecs

file=codecs.open("lol.txt","w","utf-8")

file.write(u"我")

file.close()

读取ANSI编码的文本文件和utf-8编码的文件

读取ANSI编码文件

建立一个文件test.txt,文件格式用ANSI,内容为:

复制代码 代码如下:

abc中文

用python来读取

复制代码 代码如下:

# coding=gbk

print open("Test.txt").read()

结果:abc中文

读取utf-8编码文件(无BOM)

把文件格式改成UTF-8:

复制代码 代码如下:

结果:abc涓 枃

显然,这里需要解码:

复制代码 代码如下:

# -*- coding: utf-8 -*-

import codecs

print open("Test.txt").read().decode("utf-8")

结果:abc中文

读取utf-8编码文件(有BOM)

某些软件在保存一个以UTF-8编码的文件时,默认会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。在有些软件可以控制是否插入BOM。如果在有BOM的情况下,在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量:

复制代码 代码如下:

# -*- coding: utf-8 -*-

import codecs

data = open("Test.txt").read()

if data[:3] == codecs.BOM_UTF8:

data = data[3:]

print data.decode("utf-8")

结果:abc中文

在看下面的例子:

复制代码 代码如下:

# -*- coding: utf-8 -*-

data = open("name_utf8.txt").read()

u=data.decode("utf-8")

print u[1:]

打开utf-8格式的文件并读取utf-8字符串后,解码变成unicode对象。但是会把附加的三个字符同样进行转换,变成一个unicode字符。该字符不能被打印。所以为了正常显示,采用u[1:]的方式,过滤到第一个字符。

注意:在处理unicode中文字符串的时候,必须首先对它调用encode函数,转换成其它编码输出。

设置python默认编码

复制代码 代码如下:

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

print sys.getdefaultencoding()

今天碰到了 python 编码问题, 报错信息如下

复制代码 代码如下:

Traceback (most recent call last):

File "ntpath.pyc", line 108, in join

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 36: ordinal not in range(128)

显然是当前的编码为ascii, 无法解析0xa1(十进制为161, 超过上限128). 进入python console后, 发现默认编码确实是 ascii, 验证过程为:

在python2.6中无法调用sys.setdefaultencoding()函数来修改默认编码,因为python在启动的时候会调用site.py文件,在这个文件中设置完默认编码后会删除sys的setdefaultencoding方法。不能再被调用了. 在确定sys已经导入的情况下, 可以reload sys这个模块之后, 再 sys.setdefaultencoding('utf8')

复制代码 代码如下:

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

print sys.getdefaultencoding()

确实有效, 根据 limodou 讲解, site.py 是 python 解释器启动后, 默认加载的一个脚本. 如果使用 python -S 启动的话, 将不会自动加载 site.py.

上面写的挺啰嗦的.

==================================

如何永久地将默认编码设置为utf-8呢? 有2种方法:

==================================

第一个方法<不推荐>: 编辑site.py, 修改setencoding()函数, 强制设置为 utf-8

第二个方法<推荐>: 增加一个名为 sitecustomize.py, 推荐存放的路径为 site-packages 目录下

sitecustomize.py 是在 site.py 被import 执行的, 因为 sys.setdefaultencoding() 是在 site.py 的最后删除的, 所以, 可以在 sitecustomize.py 使用 sys.setdefaultencoding().

复制代码 代码如下:

import sys

sys.setdefaultencoding('utf-8')

既然 sitecustomize.py 能被自动加载, 所以除了设置编码外, 也可以设置一些其他的东西

字符串的编码

复制代码 代码如下:

s1='中文'

像上面那样直接输入的字符串是按照代码文件的编码来处理的,如果是unicode编码,有以下三种方式:

复制代码 代码如下:

1 s1 = u'中文'

2 s2 = unicode('中文','gbk')

3 s3 = s1.decode('gbk')

unicode是一个内置函数,第二个参数指示源字符串的编码格式。

decode是任何字符串具有的方法,将字符串转换成unicode格式,参数指示源字符串的编码格式。

encode也是任何字符串具有的方法,将字符串转换成参数指定的格式。

python怎么读取中文文件-Python中使用不同编码读写txt文件详解相关推荐

  1. python实例化是什么意思_Python中实例化class的执行顺序示例详解

    前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的顺序 一般来说一个类里面有类变量和方法,比如我们定 ...

  2. tensorflow 读取cifar_对tensorflow中cifar-10文档的Read操作详解

    前言 在tensorflow的官方文档中得卷积神经网络一章,有一个使用cifar-10图片数据集的实验,搭建卷积神经网络倒不难,但是那个cifar10_input文件着实让我费了一番心思.配合着官方文 ...

  3. python实时读取日志_paramiko使用tail实时获取服务器的日志输出详解

    基本思路 现在有这么一个需求需要实现自动化:需要实时获取服务器cpu,gpu温度以及传感器信息上报情况,对高低温环境下对于设备运行状态的影响进行测试.基本思路为利用paramiko ssh到服务器上, ...

  4. 根据文件夹中的图片数据集生成.txt文件标签

    文章目录 前言 数据集格式 Python实现 注意事项 前言 深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的. ...

  5. Ubuntu下如何将文件夹中图片索引写进txt文件中

    方法之一 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt "find"后面跟的是当前文件下 ...

  6. javascript中的字符串编码、字符串方法详解

    js中的字符串是一种类数组,采用UTF-16编码的Unicode字符集,意味字符串的每个字符可用下标方式获取,而每个字符串在内存中都是一个16位值组成的序列.js对字符串的各项操作均是在对16位值进行 ...

  7. 图像分类 数据准备(将文件夹中所有图片路径写到TXT文件中)

    0文件夹里都是负样本,1文件夹的图像都是正样本图片,接下来就是生成图片的描述文件. 进入控制台 进入你的0/1文件夹下,输入以下命令: dir /b/s/p/w *.jpg > pos.txt, ...

  8. ubuntu18.04将文件夹中的所有图片名字写入txt

    参考文章:Ubuntu下如何将文件夹中图片索引写进txt文件中 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt ...

  9. python读取txt每行中分隔符内容_python 读txt文件,按‘,’分割每行数据操作

    python 读txt文件,按','分割每行数据操作,文件,字符串,目录,路径,列表 python 读txt文件,按','分割每行数据操作 易采站长站,站长之家为您整理了python 读txt文件,按 ...

最新文章

  1. GO中方法和函数的区别
  2. Unity开发者如何有效地进行本土化
  3. 磁盘文件读写和数据库读写哪个效率更高
  4. mac golang无法启动_Mac无法开机?如何修复并使其重新启动
  5. 【Machine Learning 一】监督学习与无监督学习
  6. java模拟键盘操作,java自动化操作
  7. dropdownlist中DataTextfield与DataValue的区别
  8. 编程计算二叉树中某结点的层数
  9. ImageNet下载资源(2017年)
  10. 电子发票对报销类saas的影响
  11. 为什么会发生通货膨胀
  12. 又是苦海泛起爱恨,在世间难逃命运的新一周
  13. 初学者如何选择适合自己的服务器
  14. 研发团队建设的心得体会
  15. 力扣 345. 反转字符串中的元音字母
  16. 李宏毅DLHLP.30.Controllable Chatbot
  17. 政策频繁出台,智能网联汽车安全如何“驾驭”?
  18. JS判断某年某月有多少天
  19. firefox访问网站,提示此网址已被限制 此网址使用了一个通常用于网络浏览以外目的的端口
  20. python身份证验证系统_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...

热门文章

  1. foreach delete item error
  2. 匿存函数,内存函数,递归函数,二分法查找
  3. 各种标点符号的英文翻译
  4. 把txt格式数据制作成xml数据
  5. 开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器
  6. ExtJs 4.1.1 文件结构解析
  7. .net async/await 异步等待的数种情况
  8. Bailian2943 小白鼠排队【排序】
  9. CCF201703-2 学生排队(100分)
  10. 【等价转换】—— min/max 的转换与互相转换