精华内容
下载资源
问答
  • python 设置文件编码格式

    万次阅读 2017-06-23 16:31:28
    如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。(python3已经没有这个问题了,python3默认的文件编码是UTF-8) 必须将编码注释放在第一行或者第二行,...

    转载自:http://blog.csdn.net/abyjun/article/details/50190243

    如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。(python3已经没有这个问题了,python3默认的文件编码是UTF-8)

    必须将编码注释放在第一行或者第二行,一般来说,Python文件的前两行要这样写:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    • 1
    • 2
    • 1
    • 2

    其中第一行是指定python解释器,第二行是指定python文件编码方式,设置编码方式有以下可选的方法

    1. 带等号的设置方法:

    #!/usr/bin/python
    # coding=<encoding name>
     
    • 1
    • 2
    • 1
    • 2

    2. 最常见的,带冒号的(大多数编辑器都可以正确识别的):

    #!/usr/bin/python
    # -*- coding: <encoding name> -*-
     
    • 1
    • 2
    • 1
    • 2

    3. vim的:

    #!/usr/bin/python
    # vim: set fileencoding=<encoding name> :
     
    • 1
    • 2
    • 1
    • 2

    设置头部的编码声明有以下几个作用:

    1. 如果代码中有中文注释,就需要此声明
    2. 比较高级的编辑器(比如我的emacs),会根据头部声明,将此作为代码文件的格式。
    3. 程序会通过头部声明,解码初始化 u”人生苦短”,这样的unicode对象,(所以头部声明和代码的存储格式要一致)

    设置默认解码格式

    import sys   #引用sys模块进来,并不是进行sys的第一次加载  
    reload(sys)  #重新加载sys  
    sys.setdefaultencoding('utf8')  ##调用setdefaultencoding函数
     
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    这里特别注意的是第二行的reload(sys),这个一定不能少,少了的话就不能正确运行。那么为什么要重新加载,而直接引用过来则不能调用该函数呢?因为setdefaultencoding函数在被系统调用后被删除了,所以通过import引用进来时其实已经没有了,所以必须reload一次sys模块,这样setdefaultencoding才会为可用,才能在代码里修改解释器当前的字符编码。

    在python安装目录的Lib文件夹下,有一个叫site.py的文件,在里面可以找到main() –> setencoding()–>sys.setdefaultencoding(encoding),因为这个site.py每次启动python解释器时会自动加载,所以main函数每次都会被执行,setdefaultencoding函数一出来就已经被删除了。

    关于 sys.defaultencoding,这个在解码没有明确指明解码方式的时候使用。比如我有如下代码:

    #! /usr/bin/env python 
    # -*- coding: utf-8 -*- 
    s = '中文'  # 注意这里的 str 是 str 类型的,而不是 unicode 
    s.encode('gb18030') 
     
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    这句代码将 s 重新编码为 gb18030 的格式,即进行 unicode -> str 的转换。因为 s 本身就是 str 类型的,因此 
    Python 会自动的先将 s 解码为 unicode ,然后再编码成 gb18030。因为解码是python自动进行的,我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。很多情况下 sys.defaultencoding 是 
    ANSCII,如果 s 不是这个类型就会出错。拿上面的情况来说,我的 sys.defaultencoding 是 anscii,而 s 的编码方式和文件的编码方式一致,是 utf8 的,所以出错了:

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 
    0: ordinal not in range(128) 
     
    • 1
    • 2
    • 1
    • 2

    对于这种情况,我们有两种方法来改正错误:

    一是明确的指示出 s 的编码方式

    #! /usr/bin/env python 
    # -*- coding: utf-8 -*- 
    
    s = '中文' 
    s.decode('utf-8').encode('gb18030') 
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    二是更改 sys.defaultencoding 为文件的编码方式

    #! /usr/bin/env python 
    # -*- coding: utf-8 -*- 
    
    import sys 
    reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入 
    sys.setdefaultencoding('utf-8') 
    
    str = '中文' 
    str.encode('gb18030')
    展开全文
  • 如何利用python批量转换文件编码?例如,txt文件由UTF-16LE转为UTF-8…… 问题重现:往往利用python处理数据时,都会遇到文件编码格式不对,那么如何批量转换呢,下面直接上代码! 实例:整个文件夹的txt文件由UTF-...
  • 今天小编就为大家分享一篇python指定写入文件时的编码格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 简单说下我们发布脚本层级目录 :每个服务站点下都会有一个发布脚本 .bat文件或.sh文件 所有站点保存在本地某个文件夹下 目录结构如图: 先发代码 后面在详说下过程中遇到的坑: 运行后结果 踩坑...

    最近公司在做tfs迁移,后面要用新的ip地址去访问tfs 拉取代码  ,所以原来发布脚本中.bat类型的脚本中的的ip地址需要更换    

    简单说下我们发布脚本层级目录 :每个服务站点下都会有一个发布脚本 .bat文件或.sh文件

    所有站点保存在本地某个文件夹下   目录结构如图:

     

    先发代码  后面在详说下过程中遇到的坑:

     

    运行后结果

     

    踩坑回顾:

    刚开始我都是以utf-8编码模式去读写,发现有的脚本会处理成功 然后就会报错  报错如下:

    'utf8' codec can't decod

    大概意思就是 utf-8编码无法解析读取的文件内容 

    查阅了下资料  说是windows编码方式是gbk ,ok  我把utf-8的编码方式改成了gbk   觉得这次应该差不多了 走起运行 果不其然  正常的处理了几个文件后  又报错了:

    'gbk' codec can't decod

    @#¥%@#%@#%#@%

     还是编码方式的问题

    好吧  我恶补了下文件的编码类型及编码类型的获取    知道了   chardet  模块    写了个方法识别文件的编码方式

    def  recognition(path):
    file = open(path, "rb")
    buf = file.read()
    result = chardet.detect(buf)
    return result['encoding']

     随机找了几个脚本文件去跑  发现有的.bat文件的编码类型是utf-8  有的是GB2312  还有的是ISO-8859-9   也是够奇葩的

    找到问题所在了  当时想了两个解决方案

    1 统一文件编码方式 然后再去处理

    2 判断文件的编码方式  什么编码方式  就用该编码方式去处理

    当时觉得方案1 比较极端  所以采用了方案2  

    可以发现 方案2我对编码方式为ISO-8859-9 的 直接pass掉了   。虽然也是.bat的文件    但是这种编码方式的文件并不是我们的发布脚本   

     

    ok  没了 

     

    转载于:https://www.cnblogs.com/dwtt/p/8360831.html

    展开全文
  • python修改指定文件编码格式

    千次阅读 2019-11-27 17:16:38
    2、安装完后,在python安装目录会多出2个文件夹 import chardet import codecs def convert_file_to_utf8(filename): # !!! does not backup the origin file content = codecs.open(filename, 'r').read...

    1、安装chardet 

    2、安装完后,在python安装目录会多出2个文件夹

    import chardet
    import codecs
    
    def convert_file_to_utf8(filename):
        # !!! does not backup the origin file
        content = codecs.open(filename, 'r').read()
        source_encoding = chardet.detect(content)['encoding']
        if source_encoding == None:
            print("encoding is None: %s"%filename)
            return
        print("[%s]--->[%s]: %s"%(filename,source_encoding,'utf-8'))
        if source_encoding != 'utf-8':
            content = content.decode(source_encoding, 'ignore') .encode("utf-8")
            codecs.open(filename, 'w', encoding='utf-8').write(content)
    
    if __name__ == "__main__":
        convert_file_to_utf8("D:/test.txt")
        
    展开全文
  • python批量修改txt文件,csv文件 编码格式 from os import listdir from chardet import detect fns = (fn for fn in listdir() if fn.endswith('.csv')) for fn in fns: with open(fn, 'rb+') as fp: content = ...

    python批量修改txt文件,csv文件 编码格式

    from os import listdir
    from chardet import detect
    
    fns = (fn for fn in listdir() if fn.endswith('.csv'))
    
    for fn in fns:
       with open(fn, 'rb+') as fp:
           content = fp.read()
           encoding = detect(content)['encoding']
           content = content.decode(encoding).encode('utf8')
           fp.seek(0)
           fp.write(content)
    

    批量改为utf-8编码

    转载于:https://blog.51cto.com/13000661/2129573

    展开全文
  • 本文实例为大家分享了python批量修改文件编码格式的具体代码,供大家参考,具体内容如下 使用说明: 1、使用工具:Python2.7.6+chardet2.3.0,chardet2.3.0下载地址:点击这里 2、环境配置:Python安装+配置环境...
  • 文件最开始的地方加上# -*- coding: encoding -*-其中,红字部分为要改成的编码格式,默认是UTF-8 转载于:https://blog.51cto.com/itlearninger/1899562
  • 后来发现只要把srt的文件另存为时改编码为utf8就可以看了,请问怎么把srt批量修改编码utf8??或者在转换的过程中就保存为utf8,转换的代码如下: ``` #coding = utf-8 import os import re path = r"D:...
  • Python txt文件编码格式转换

    千次阅读 2019-01-26 14:56:42
    import os import sys import codecs import chardet # from subFunc_tools import * def list_folders_...文件" 名字 :param path: "文件夹"和"文件"所在的路径 :return: (list_fol.
  • 主要介绍了python解决js文件utf-8编码乱码问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 在windows平台开发python时,会遇到utf-8和gbk编码不同意造成乱码的问题,将此文件放在\PYTHON_HOME\Lib\site-packages目录下,可以解决问题
  • Python3.6 批量修改文件编码格式

    千次阅读 2019-01-23 11:58:34
    遍历指定目录下的所有文件,读取.cpp文件和.h文件,将非utf-8编码文件改为utf-8格式
  • Python 读取文件编码错误

    千次阅读 2018-03-23 20:44:28
    解决方案:初步确认是文件路径的格式不对,filename应该为:E:/Python/Corpus/News/Environment/001.txt 这里是斜杆,而不是反斜杠 3、UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc5 in position 0: ...
  • 1 def change_file_code(coding,files_name): 2 try ...由于文件涉及到windows的 ...使用linecache须在文件头注明文件编码格式:coding = utf-8 转载于:https://www.cnblogs.com/sagacity-shen/p/10979852.html
  • /usr/bin/env python# coding: UTF-8import sysimport osimport chardet def print_usage(): print ”’usage: change_charset [file|directory] [charset] [output file]\n for example: change 1.txt utf-8 ...
  • 由于以前脑残的我不知道改编码方式,导致出现了大量的GBK,这就很难受,要是一个两个还好说,可是这么多要是一个一个的改我会觉得现在的我比以前还脑残,于是乎,我就想用python批量的修改一下,然后就产生了这篇...
  • python3 # encoding: utf-8 import os import chardet def strJudgeCode(str1): return chardet.detect(str1) """ def readFile(path): with open(path,'r',encoding='utf-16 le') as f: filecontent ...
  • python读取csv文件编码问题

    千次阅读 2020-12-08 15:26:05
    无效方法:使用python读取含有中文的csv文件的时候常常遇到编码错误,因此就想把csv文件编码改为utf-8编码方式,用excel打开另存为utf-8格式没法解决问题,可以采用以下方法: 有效方法:首先,将.csv文件保存一下...
  • 01. 文件的概念 1.1 文件的概念和作用 计算机的文件,就是存储在某种长期储存设备上的一段数据 长期存储设备包括:硬盘、U 盘、移动硬盘、光盘... 文件的作用 将数据长期保存下来,在需要的时候使用 1.2 ...
  • 处理日常的csv文件筛选问题中,通过以下的一段小代码,发现不同的编码格式下的程序有不同的错误,如下: #encoding=utf-8 import csv with open('3020100_2019_qb.csv','r') as f: f_field =...
  • 最近看了python的IO编程,我又记得以前写的那个文本文件转换编码的博客了。它是基于Java语言的,总所周知,python以简洁著称,所以我们这里来使用python实现一下。这里只是一个简单的实现,具体的想法可以参考上面...
  • 设置路径:settings—&gt;Editor—&gt;File and Code Templates —&gt;Python Script 新建python文件,就会自动带上  # -*- coding:utf8 -*-
  • python 将csv文件编码格式更改为utf-8

    千次阅读 2021-07-12 15:14:14
    # 读取文件 import csv with open('./input.csv', 'r') as f: reader = csv.reader(f) for line in reader: print line # 写入文件 import csv text = "hello world" with open('./output.csv', 'w') as f: ...
  • Python中文件编码的检测

    千次阅读 2019-07-15 20:56:07
    文件打开的原则是“以什么编码格式保存的,就以什么编码格式打开”,我们常见的文件一般是以“ utf-8 ”或“ GBK ”编码进行保存的,由于编辑器一般设置了默认的保存和打开方式,所以我们在记事本或常见文档编辑器如...
  • 自动识别 文本编码格式 """ import chardet def detectCode(path): with open(path, 'rb') as file: data = file.read(20000) dicts = chardet.detect(data) return dicts["encoding"] def p...
  • 今天小编就为大家分享一篇Python3 解决读取中文文件txt编码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 问题描述 尝试用Python写一个Wordcloud的时候,出现了编码问题。 照着网上某些...
  • 今天小编就为大家分享一篇python 解压pkl文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,172
精华内容 46,468
关键字:

python修改文件编码

python 订阅