Python转码解压多进程

Python批量转换文件编码格式

Eclipse中看ANSI编码的文件有乱码,所以希望通过python将相关文件转换成utf-8编码。

源:https://www.cnblogs.com/tsbc/p/4450675.html

 

'''

遍历文件夹

如果文件名是.cpp .h

    如果原来的编码不是utf-8,将文件编码格式改成utf-8

'''

 

import os,sys

import chardet

 

def convert( filename, out_enc="UTF8" ):

    try:

        fp = open(filename,'rb+')

        content = fp.read()

        coding = chardet.detect(content)['encoding'] #获取encoding的值[编码格式]

        if coding != 'utf-8':

            new_content = content.decode(coding,"ignore").encode(out_enc)

            fp.seek(0)

            fp.write(new_content)

            fp.close()

    except IOError:

        print( " error")

 

 

def explore(dir):

    #遍历目录

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

        for file in files:

            if '.cpp' in file or '.h' in file:

                path = os.path.join(root, file)

                convert(path)

 

fiePath = r'E:\Code'

 

def main():

    explore(fiePath)

 

if __name__ == "__main__":

    main()

 

Python解压

https://www.cnblogs.com/Oliva/p/8824040.html 多线程字典破解加密zip

https://www.cnblogs.com/fyqq0403/p/9710420.html 解压加密的zip

https://www.cnblogs.com/flyhigh1860/p/3884842.html 解压zip

Python多线程&多进程

https://www.cnblogs.com/yeayee/p/4952022.html 基础介绍

https://www.cnblogs.com/kellyseeme/p/5525017.html 锁的应用

https://www.cnblogs.com/znicy/p/6234522.html  通过多进程的方式解决了解压缩的性能问题

https://www.cnblogs.com/xybaby/p/6510941.html#undefined  python性能优化,介绍了GIL导致多线程的问题

https://www.cnblogs.com/SuKiWX/p/8804974.html   python GIL解释

 

python解压多个压缩文件(环境中有6000个左右压缩文件)遇到瓶颈,解压过程非常慢。尝试用多线程解压,处理时间不仅没有减少,还增加了。后搜索上述博客后,用多进程解压以缩短处理时间。

import zipfile

import tarfile

import gzip

import os

from time import ctime

from multiprocessing import Pool

from multiprocessing import cpu_count

 

dayZipsPath = r'.'             

quarterZipsPath = r'./tmp'     

zipPassWord = b'password'        

mrFilePath = r'./data'          

 

def unzipDayFile():

    for file_name in os.listdir(dayZipsPath):

        if os.path.splitext(file_name)[1] == '.zip':

            print( file_name)

            file_zip = zipfile.ZipFile(file_name, 'r')

            file_zip.extractall(path = quarterZipsPath, pwd = zipPassWord)

            file_zip.close()

            #os.remove(file_name)

 

def untarDayFile():

    for file_name in os.listdir(dayZipsPath):

        if '.tar.gz' in file_name:

            print( file_name)

            file_tar = tarfile.open(file_name)

            file_tar.extractall(path = quarterZipsPath)

            file_tar.close()

            #os.remove(file_name)

 

def unzip(zipsList):

    for file_name in zipsList:

        if os.path.splitext(file_name)[1] == '.zip':

            zipFileName = quarterZipsPath +'/'+ file_name

            file_zip = zipfile.ZipFile(zipFileName, 'r')

            file_zip.extractall(path = mrFilePath, pwd = zipPassWord)

            file_zip.close()

            os.remove(zipFileName)

 

if __name__ == '__main__':

    print('Begin:%s' % ctime())

    #获取CPU核个数

    cpuNum = cpu_count()

    print(cpuNum)

    

    unzipDayFile()

    untarDayFile()

    

    #多进程解压,大大缩短处理时间

    quarterZipsList = list(os.listdir(quarterZipsPath))

    zipFileNum = len(quarterZipsList)

    print("total zip files num:%d" % (zipFileNum))

    print("begin unzip:%s" % ctime())

    p = Pool()

    for i in range(cpuNum):

        beginPos = int(i*zipFileNum/cpuNum)

        endPos = min(int((i+1)*zipFileNum/cpuNum),zipFileNum)

        print("proc %d - %d" % (beginPos, endPos))

        p.apply_async(unzip,args=(quarterZipsList[beginPos:endPos],))

    print("waiting for unzip quarter mr data ...")

    p.close()

    p.join()

    print("end unzip:%s" % ctime())  

    print( "End:%s" % ctime())

转载于:https://www.cnblogs.com/sunnypoem/p/10123142.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某项目的双代号网络图如下所示_2019一级建造师项目管理知识点大全3

更多精彩内容,点击 蓝字 关注我们1Z203000 建设工程项目进度控制1Z203010 建设工程项目进度控制与进度计划系统>>> 1Z203011 项目进度控制的目的考点 1:项目进度控制的工作环节 项目管理各方都有进度控制的任务,但其控制的目标和…

java学习(118):vector类

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; //员工信息类 //date类 public class test50 {private String name;private String sex;private Date birth;public void showme(){System.out.println(this.getName());System.out.p…

Ipython\Jupyter数据分析工具

使用Python进行数据分析优点   1 Python大量的库为数据分析和处理提供了完整的工具集   2 比起R和Matlab等其他主要用于数据分析的编程语言,Python更全能   3 Python库一直在增加,算法的实现采用更具有创新性的方法   4 Python能和很多语言对接&…

linux搭建vsftp服务器_Linux安装配置vsftp搭建FTP的详细配置

vsftp是very secure ftp的缩写,它最初的发展理念就是构建一个安全的ftp服务。现在它确实是一个非常安全稳定的ftp服务软件,广泛用作在Unix/Linux操作系统中,作为文件服务器使用。安装vsftp这里演示使用yum安装,该软件非常的小&…

java学习(119):set类

public class Goods {//商品实体类private String number;//商品编号private String name;//商品价格private double price;//商品单价private int quantity;//商品数量public void setNumber(String number) {this.number number;}public String getNumber() {return numbe…

分页的limit_20.MySQL中的LIMIT(分页)

对于一次性查询出的大量记录,不仅不便于阅读查看,还会浪费系统效率。MySQL中提供了一个关键字LIMIT,可以限定记录的数量,也可以指定查询从哪一条记录开始(通常用于分页)。1.准备CREATE DATABASE mahaiwuji;USE mahaiwuji;CREATE T…

java学习(120):set的iterator

public class Goods {//商品实体类private String number;//商品编号private String name;//商品价格private double price;//商品单价private int quantity;//商品数量public void setNumber(String number) {this.number number;}public String getNumber() {return numbe…

深入浅出etcd系列 – 心跳和选举

作者:宝爷 校对:DJ 1、绪论 etcd作为华为云PaaS的核心部件,实现了PaaS大多数组件的数据持久化、集群选举、状态同步等功能。如此重要的一个部件,我们只有深入地理解其架构设计和内部工作机制,才能更好地学习华为云Kube…

java学习(121):treeset排序集合

//treeset排序集合 import java.util.*;public class test61{public static void main(String[] args){TreeSet treenew TreeSet();//创建一个采用默认树形自然排序的对象tree.add(new Integer(50));tree.add(new Integer(150));tree.add(new Integer(250));tree.add(new Integ…

修改value_EXCEL批量名称修改

!!嘿嘿,今天给大家更新一章网上算是比较热的一个EXCEL技巧,当然这个是用VBA才能做到的,那就是名称的批量修改.打个比方吧.如果今天你要整理一下,你过往的一些照片,或者文件,这些文件或者照片要按照编辑时间和事件名称来进行编辑,那么你会怎么办?或者说,今天我到西湖去玩了一趟…

java处理url中的特殊字符%等

java处理url中的特殊字符(如&,%...)URL(Uniform Resoure Locator,统一资源定位器)是Internet中对资源进行统一定位和管理的标志。一个完整的URL包括如下内容:1. 应用协议名称,包括http,ftp,file等标志2. …

java学习(122):treeset自定义排序

//自定义排序 import java.util.*; public class test62 {public static void main(String[] args){TreeSet treenew TreeSet();//创建一个采用默认树形自然排序的对象tree.add(new Integer(50));tree.add(new Integer(150));tree.add(new Integer(250));tree.add(new Integer(…

运行指定代码_JavaScript 运行机制(Event Loop)详解

一、为什么JavaScript是单线程?JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。JavaScript的单线程,与它的用途有关。作…

Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)

上次分享了支付宝订单退款的代码,今天分享一下支付宝转账的操作. 现在是有一个余额提现的功能,本来是打算做提现到银行卡的,但是客户嫌麻烦不想注册银联的开放平台账户,就说先提现到支付宝就行,二期再做银行卡的提现. 先在支付宝APP里添加此功能,需要签约. 此API官方参数文档 …

java学习(123):treeset排序集合

import java.util.Comparator;public class GoodsSorts implements Comparator {public int compare(Object o1,Object o2){Goods g1(Goods)o1;Goods g2(Goods)o2;System.out.println("调用排序方法");if(g1.getPrice()>g2.getPrice()){return -1;}else if(g1.get…

python全栈工程师能接到私活么_Python全栈工程师(包、模块 的导入)

ParisGabriel每天坚持手写 一天一篇 决定坚持几年 为了梦想 为了信仰Python人工智能从入门到精通$ pip3 install tensorflow :第三方模块tensorflow 的安装电脑必须有网 命令行自动下载安装dir(模块名):查看模块所有属性自定义模块导入示例:自定义模块…

题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?...

题目一:给出一个n,代表有从1到n的数字[1,2,3, n],问可以构成多少种二叉搜索树? 一开始的想法是直接递归构造,时间复杂度是指数上升;后来想法是找规律:先看例子: n 1, 有一个元素,可以构成一个二…

java学习(124):小综合案例

public class Province {private String name;//省份名称private long area;//土地面积private boolean general;//是普通省份还是特殊省份public String getName() {return name;}public void setName(String name) {this.name name;}public long getArea() {return area;}pu…

论文发表在什么期刊上_医学论文发表期刊论文范文

普通期刊是国内期刊中底数最多、选择范围最广、受众最广的期刊类型。这对国内作家来说一定不陌生。选择出版普通期刊的作者总是很多,无论是大学生还是发表专业职称的专业人士。写普通期刊并不难。普通期刊对论文的要求大多是论文的基本要求,大多数人都能…

[Docker]Docker拉取,上传镜像到Harbor仓库

需求因为项目的需求,需要制作一个基于tomcat的镜像.那么前提就是,需要有tomcat的基础镜像. 怎么做我的思路跑偏了,本来以为是需要将tomcat下载下来,然后通过docker命令,让它成为镜像的.结果后来和老大一沟通,才发现自己的思路偏的不是一点儿半点儿 如果需要tomcat镜像,可以从Do…