使用python改变文件夹中的代码文件编码

2017-1-18 python

现状:

项目以前在windows底下写的使用的编码是gbk

在mac os底下用xcode显示中文乱码

解决方式:

    把项目底下文件的编码改为utf-8编码

使用工具:

    python

代码如下:

   

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

import os

class CodeConvert :

    def __init__(self, path, dcode, scode) :

        self.file_lists = []

        if os.path.exists(path) :

            self.parent_path = path

        else :

            self.parent_path = ""

        self.dest_code = dcode

        self.src_code = scode

        self.exts = [".cpp", ".c", ".h"]

    def ListFiles(self) :

        for root, dirs, files in os.walk(self.parent_path) :

            for name in files :

                self.file_lists.append(os.path.join(root, name))

    def Convert2DestCode(self) :

        for file in self.file_lists:

            ext = os.path.splitext(file)[1]

            ext = ext.lower()

            if ext in self.exts :

                self.Convert(file)

    def Convert(self, file) :

        try :

            print file

            f = open(file)

            buf = f.read()

            f.close()

            u1 = buf.decode(self.src_code)

            utf1 = u1.encode(self.dest_code)

            f = open(file, 'w+')

            f.write(utf1)

            f.close()

        except :

            print "except" + file


def main() :

    convert = CodeConvert('/Users/xxx/Desktop/xxx', 'utf8', 'gbk')

    convert.ListFiles()

    convert.Convert2DestCode()

标签: python utf8 gbk xcode

评论(0) 浏览(1022)

python利用py2exe生成的exe窗口一闪而过解决办法

2016-12-1 python

利用py2exe把python脚本生成exe后,运行程序一闪而过

窗口提示找不到模块例如xlsxwriter

原因是xlsxwriter库使在egg里面,因此py2exe生成时没办法导入

解决办法:

把xlsxwriter解压到工程目录文件夹中,再重新生成下就可以了

标签: python py2exe xlsxwriter

评论(0) 浏览(1763)

python yield 使用说明

2016-10-15 python

标签: python yield

评论(0) 浏览(974)

python with 使用说明

2016-10-15 python

参考:http://effbot.org/zone/python-with-statement.htm

一旦知道with段用于解决什么问题,那使用with语法将会非常简单:

如下片段:

    set things up #打开一个文件或请求外部资源

    try :

        do something

    finally :

        tear things down #关闭文件或释放资源

    try-finally结构保证"tear things down"一直都会被执行,不管"do something"有没有完成


如果要经常使用这个结构,可以考虑使用如下结构:

    def controlled_execution(callback) :

        set things up

        try :

            callback(thing)

        finally :

            tear things down

    def my_fn(thing) :

        do something


    controlled_execution(my_fn)

但是看起来有点啰嗦, 也可以采用如下方式:

    def controlled_execution() :

        set things up

        try :

            yield thing

        finally :

            tear things down


    for thing in controlled_execution() :

        do something in thing

但你只要执行一次函数时,也要使用loop就有点奇怪了

python团队使用如下结构来替代:

    class controlled_execution :

        def __enter__(self) :

            set things up

            return thing

        def __exit__(self, type, value, traceback) :

            tear things down

    with controlled_execution() as thing :

        some code

当with执行时,python执行__enter__方法,返回值给thing,

然后执行some code, 不管some code执行成功与否,执行完调用__exit__方法;

如果要抑制异常抛出,可以使__exit__()返回True,如忽略TypeError:

    def __exit__(self, type, value, traceback) :

        return isinstance(value, TypeError)

打开一个文件,处理里面内容然后保证它被关闭,可以使用如下代码:

    with open("x.txt") as f :

        data = f.read()

        do something with data

    

标签: python with

评论(0) 浏览(1077)

python 解决‘ascii‘ codec can‘t encode characters in position ordinal not in range(128)

2016-10-10 python

使用java 通过cmd调用python脚本时出现unicodeEncodeError

通过搜索说是读取文件默认是ascii而不是utf8导致的

在代码中加上如下几句即可

import sys

reload(sys)

sys.setdefaultencoding(‘utf8’)

标签: python

评论(0) 浏览(997)

python dir_util copy_tree errno 9

2016-10-9 python

使用python2.7.10写脚本从一个文件夹复制文件到另一个文件夹时出错

错误原因在读取源文件时找不到文件描述

errno 9

但是通过python idle执行可以,后来把python更新到2.7.12版本就可以了

可能是2.7.10 bug吧

运行环境 windows 2008 64位 英文版

标签: python

评论(0) 浏览(1088)

Powered by EMLOG Copyright @ 狼酒 版权所有. 闽ICP备14012694号-2