精华内容
下载资源
问答
  • 最近下了一些资料来看,下下来是压缩包格式zip,但是解压后乱码,乱码格式是这样的: шп╛хаВф╗гчаБ5 这是什么鬼哦 原因: zip在压缩时并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB...

    最近下了一些资料来看,下下来是压缩包格式为zip,但是解压后乱码,乱码格式是这样的:

    шп╛хаВф╗гчаБ5
    

    这是什么鬼哦
    原因:

    zip在压缩时并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,而Linux下的默认编码是UTF8,

    所以这些zip文件在Linux下解压时会出现中文乱码问题。
    解决的方法:
    加上CP936选项,最早的GBK编码,就是IBM定制的MBCS字符集,汉字编码正好在整个字符集中的936页,因此好多地方其实都是用CP936来代表GBK。
    unzip -O CP936 sun.zip
    指定解压到某个指定目录:
    unzip -O CP936 sun.zip -d /root/file

    展开全文
  • 从云展网下载下来的文件都是经过后台压缩打包的,很多用户是直接点击压缩包打开运行其中的执行文件,这个方法是错误,因为这样直接打开只会解压其中...正确的做法:把整个压缩包解压后,再点击其中的EXE文件。 ...

    从云展网下载下来的文件都是经过后台压缩打包的,很多用户是直接点击压缩包打开运行其中的执行文件,这个方法是错误,因为这样直接打开只会解压其中的执行文件,但资源包是还没有解压的,所以造成打开失败,看不到内容。正确的做法:把整个压缩包解压后,再点击其中的EXE文件。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 不知道有没有小伙伴跟我一样犯这样的懒,一些简单重复的工作,总是嫌麻烦,懒得一步步去做,还每次都重复...如下图:学习了Python的递归调用,心想,为什么我不写一个脚本自动解压所有的压缩包呢?emmm....心动...

    不知道有没有小伙伴跟我一样犯这样的懒,一些简单重复的工作,总是嫌麻烦,懒得一步步去做,还每次都重复一样的操作。比如解压zip或rar的包,也许你会说,不就解压嘛,有啥的。问题来了,如果只是一个简单的压缩包也是算了,关键是压缩包里还有压缩包,也不知道多少层,要一层层去解压,这就比较恶心了吧?如下图:

    学习了Python的递归调用后,心想,为什么我不写一个脚本自动解压所有的压缩包呢?emmm....心动不如行动,说写就写,谁让我是这么懒的一个人呢,连解压都得自动化,哈哈哈。

    那就来吧,先从最简单的开始,搞个zip包用命令行解压看看:

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

    importzipfileimportos

    path= r'C:\Users\ES-IT-PC-193\Desktop\aa\A.zip'z= zipfile.ZipFile(path, 'r')

    unzip_path= os.path.split(path)[0] #解压路径

    z.extractall(path=unzip_path)

    嗯,试了试,没问题,能正常解压。那接下来就是解决如果把压缩包里包含压缩包的也一块解压了,那我得把解压的命令封装成函数,然后循环解压就好了。这里正好用上了刚学不久的递归调用。

    #-*- coding: utf-8 -*-#2019/8/13 14:57

    importzipfileimportosdefunzip_file(path):'''解压zip包'''

    ifos.path.exists(path):if path.endswith('.zip'):

    z= zipfile.ZipFile(path, 'r')

    unzip_path=os.path.split(path)[0]

    z.extractall(path=unzip_path)

    zip_list= z.namelist() #返回解压后的所有文件夹和文件

    for zip_file inzip_list:

    new_path=os.path.join(unzip_path,zip_file)

    unzip_file(new_path)

    z.close()elifos.path.isdir(path):for file_name inos.listdir(path):

    unzip_file(os.path.join(path, file_name))else:print('the path is not exist!!!')if __name__ == '__main__':

    zip_path= r'C:\Users\ES-IT-PC-193\Desktop\aa\A.zip'unzip_file(zip_path)

    嗯,效果还不错,能把所有的压缩包都递归解压开了,然而,问题来了,解压开的文件名称怎么都成乱码了?!!

    于是开始寻找解决乱码问题的方法,然后是各种百度。哎,编码问题一直困扰了我很久,总也搞不明白,这里推荐Alex写的一篇博客,写的很详细,反正我看完后就只知道,不管什么编码格式,都统统给它转成Unicode,然后再转成utf-8或者gbk的格式。哈哈哈。

    Alex的博客链接:https://www.cnblogs.com/alex3714/articles/7550940.html

    然后我就接着搞搞,各种尝试,还是不行,就是转换不过来,奇怪了。搞了好久还是没找到什么原因。彻底蒙圈了,郁闷~~,晚上睡觉我都能梦见我在解决编码问题,哈哈哈。今天早上脑袋还算比较清醒,再继续找bug。一行行代码调试。果然啊,功夫不负有心人。还是被我找到是什么原因了。

    C:\Users\ES-IT-PC-193\Desktop\aa\A\│┬┤·└╓\

    C:\Users\ES-IT-PC-193\Desktop\aa\A\╤Θ╓ñ┬δ.py

    像这样的一个路径,打印出来的类型就是一个普通的,整行路径去转换格式是不行的!!只有把乱码的部分切割出来,再单独转换就可以了。哦,天。就这样,一个小小的问题,卡了我好久。泪奔~

    再加上编码转换:

    #-*- coding: utf-8 -*-#2019/8/13 14:57

    importzipfileimportosdefunzip_file(path):'''解压zip包'''

    ifos.path.exists(path):if path.endswith('.zip'):

    z= zipfile.ZipFile(path, 'r')

    unzip_path=os.path.split(path)[0]

    z.extractall(path=unzip_path)

    zip_list= z.namelist() #返回解压后的所有文件夹和文件for zip_file inzip_list:try:

    zip_file2= zip_file.encode('cp437').decode('gbk')except:

    zip_file2= zip_file.encode('utf-8').decode('utf-8')old_path=os.path.join(unzip_path,zip_file)

    new_path=os.path.join(unzip_path,zip_file2)ifos.path.exists(old_path):

    os.renames(old_path, new_path)

    unzip_file(new_path)

    z.close()elifos.path.isdir(path):for file_name inos.listdir(path):

    unzip_file(os.path.join(path, file_name))else:print('the path is not exist!!!')if __name__ == '__main__':

    zip_path= r'C:\Users\ES-IT-PC-193\Desktop\aa\A.zip'unzip_file(zip_path)

    作为有强迫症患者的我,看着这个代码真是乱啊,不爽,需要优化一下。

    于是做了一下几点优化:

    1、加上rar压缩包的解压,这里需要注意的是,需要下载一个UnRAR.exe文件放在脚本的同级目录。

    2、把编码转换再单独写一个函数,传入一个带有乱码的路径,返回转换好的路径就行了。

    3、把解压单独写一个函数,这样解压zip和rar的包就不用写段重复的代码了。

    4、解压后,目录里有一堆压缩包,我只想要解压后的文件,于是再写了一个删除解压后不用的压缩包的函数。

    最终版的代码如下,欢迎各位小伙伴指导。

    #-*- coding: utf-8 -*-#2019/8/13 14:57

    importzipfileimportrarfileimportosimportsysdefchengeChar(path):'''处理乱码'''

    if not os.path.exists(path): returnpath

    path= path.rstrip('/').rstrip('\\') #去除路径最右边的/

    file_name = os.path.split(path)[-1] #获取最后一段字符,准备转换

    file_path = os.path.split(path)[0] #获取前面的路径,为rename做准备

    try: #将最后一段有乱码的字符串转换,尝试过整个路径转换,不生效,估计是无法获取整个路径的编码格式吧。

    new_name = file_name.encode('cp437').decode('gbk')except: #先转换成Unicode再转换回gbk或utf-8

    new_name = file_name.encode('utf-8').decode('utf-8')

    path2= os.path.join(file_path, new_name) #将转换完成的字符串组合成新的路径

    try:

    os.renames(path, path2)#重命名文件

    except:print('renames error!!')returnpath2defdel_zip(path):'''删除解压出来的zip包'''path=chengeChar(path)if path.endswith('.zip') or path.endswith('.rar'):

    os.remove(path)elifos.path.isdir(path):for i inos.listdir(path):

    file_path=os.path.join(path, i)

    del_zip(file_path)#递归调用,先把所有的文件删除

    defunzip_file(z, unzip_path):'''解压zip包'''z.extractall(path=unzip_path)

    zip_list= z.namelist() #返回解压后的所有文件夹和文件list

    z.close()for zip_file inzip_list:

    path=os.path.join(unzip_path, zip_file)ifos.path.exists(path): main(path)defmain(path):'''主逻辑函数'''path=chengeChar(path)ifos.path.exists(path):

    unzip_path= os.path.splitext(path)[0] #解压至当前目录

    if path.endswith('.zip') andzipfile.is_zipfile(path):

    z= zipfile.ZipFile(path, 'r')

    unzip_file(z, unzip_path)elif path.endswith('.rar'):

    r=rarfile.RarFile(path)

    unzip_file(r, unzip_path)elifos.path.isdir(path):for file_name inos.listdir(path):

    path=os.path.join(path, file_name)ifos.path.exists(path): main(path)else:print(path)else:print('the path is not exist!!!')print(path)if __name__ == '__main__':#zip_path = r'C:\Users\ES-IT-PC-193\Desktop\aa\HighLevel\HighLevel'

    zip_path = r'C:\Users\ES-IT-PC-193\Desktop\aa\HighLevel.zip'

    #zip_path = sys.argv[1] # 接收传入的路径参数

    ifos.path.isdir(zip_path):for file_name inos.listdir(zip_path):

    path=os.path.join(zip_path, file_name)

    main(path)else:

    main(zip_path)if zipfile.is_zipfile(zip_path): #删除解压出来的压缩包

    del_zip(os.path.splitext(zip_path)[0]) #以后缀名切割

    展开全文
  • 不知道有没有小伙伴跟我一样犯这样的懒,一些简单重复的工作,总是嫌麻烦,懒得一步步去做,还每次都重复...如下图:学习了Python的递归调用,心想,为什么我不写一个脚本自动解压所有的压缩包呢?emmm....心动...

    不知道有没有小伙伴跟我一样犯这样的懒,一些简单重复的工作,总是嫌麻烦,懒得一步步去做,还每次都重复一样的操作。比如解压zip或rar的包,也许你会说,不就解压嘛,有啥的。问题来了,如果只是一个简单的压缩包也是算了,关键是压缩包里还有压缩包,也不知道多少层,要一层层去解压,这就比较恶心了吧?如下图:

    学习了Python的递归调用后,心想,为什么我不写一个脚本自动解压所有的压缩包呢?emmm....心动不如行动,说写就写,谁让我是这么懒的一个人呢,连解压都得自动化,哈哈哈。

    那就来吧,先从最简单的开始,搞个zip包用命令行解压看看:

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

    importzipfileimportos

    path= r'C:\Users\ES-IT-PC-193\Desktop\aa\A.zip'z= zipfile.ZipFile(path, 'r')

    unzip_path= os.path.split(path)[0] #解压路径

    z.extractall(path=unzip_path)

    嗯,试了试,没问题,能正常解压。那接下来就是解决如果把压缩包里包含压缩包的也一块解压了,那我得把解压的命令封装成函数,然后循环解压就好了。这里正好用上了刚学不久的递归调用。

    #-*- coding: utf-8 -*-#2019/8/13 14:57

    importzipfileimportosdefunzip_file(path):'''解压zip包'''

    ifos.path.exists(path):if path.endswith('.zip'):

    z= zipfile.ZipFile(path, 'r')

    unzip_path=os.path.split(path)[0]

    z.extractall(path=unzip_path)

    zip_list= z.namelist() #返回解压后的所有文件夹和文件

    for zip_file inzip_list:

    new_path=os.path.join(unzip_path,zip_file)

    unzip_file(new_path)

    z.close()elifos.path.isdir(path):for file_name inos.listdir(path):

    unzip_file(os.path.join(path, file_name))else:print('the path is not exist!!!')if __name__ == '__main__':

    zip_path= r'C:\Users\ES-IT-PC-193\Desktop\aa\A.zip'unzip_file(zip_path)

    嗯,效果还不错,能把所有的压缩包都递归解压开了,然而,问题来了,解压开的文件名称怎么都成乱码了?!!

    于是开始寻找解决乱码问题的方法,然后是各种百度。哎,编码问题一直困扰了我很久,总也搞不明白,这里推荐Alex写的一篇博客,写的很详细,反正我看完后就只知道,不管什么编码格式,都统统给它转成Unicode,然后再转成utf-8或者gbk的格式。哈哈哈。

    Alex的博客链接:https://www.cnblogs.com/alex3714/articles/7550940.html

    然后我就接着搞搞,各种尝试,还是不行,就是转换不过来,奇怪了。搞了好久还是没找到什么原因。彻底蒙圈了,郁闷~~,晚上睡觉我都能梦见我在解决编码问题,哈哈哈。今天早上脑袋还算比较清醒,再继续找bug。一行行代码调试。果然啊,功夫不负有心人。还是被我找到是什么原因了。

    C:\Users\ES-IT-PC-193\Desktop\aa\A\│┬┤·└╓\

    C:\Users\ES-IT-PC-193\Desktop\aa\A\╤Θ╓ñ┬δ.py

    像这样的一个路径,打印出来的类型就是一个普通的,整行路径去转换格式是不行的!!只有把乱码的部分切割出来,再单独转换就可以了。哦,天。就这样,一个小小的问题,卡了我好久。泪奔~

    再加上编码转换:

    #-*- coding: utf-8 -*-#2019/8/13 14:57

    importzipfileimportosdefunzip_file(path):'''解压zip包'''

    ifos.path.exists(path):if path.endswith('.zip'):

    z= zipfile.ZipFile(path, 'r')

    unzip_path=os.path.split(path)[0]

    z.extractall(path=unzip_path)

    zip_list= z.namelist() #返回解压后的所有文件夹和文件for zip_file inzip_list:try:

    zip_file2= zip_file.encode('cp437').decode('gbk')except:

    zip_file2= zip_file.encode('utf-8').decode('utf-8')old_path=os.path.join(unzip_path,zip_file)

    new_path=os.path.join(unzip_path,zip_file2)ifos.path.exists(old_path):

    os.renames(old_path, new_path)

    unzip_file(new_path)

    z.close()elifos.path.isdir(path):for file_name inos.listdir(path):

    unzip_file(os.path.join(path, file_name))else:print('the path is not exist!!!')if __name__ == '__main__':

    zip_path= r'C:\Users\ES-IT-PC-193\Desktop\aa\A.zip'unzip_file(zip_path)

    作为有强迫症患者的我,看着这个代码真是乱啊,不爽,需要优化一下。

    于是做了一下几点优化:

    1、加上rar压缩包的解压,这里需要注意的是,需要下载一个UnRAR.exe文件放在脚本的同级目录。

    2、把编码转换再单独写一个函数,传入一个带有乱码的路径,返回转换好的路径就行了。

    3、把解压单独写一个函数,这样解压zip和rar的包就不用写段重复的代码了。

    4、解压后,目录里有一堆压缩包,我只想要解压后的文件,于是再写了一个删除解压后不用的压缩包的函数。

    最终版的代码如下,欢迎各位小伙伴指导。

    #-*- coding: utf-8 -*-#2019/8/13 14:57

    importzipfileimportrarfileimportosimportsysdefchengeChar(path):'''处理乱码'''

    if not os.path.exists(path): returnpath

    path= path.rstrip('/').rstrip('\\') #去除路径最右边的/

    file_name = os.path.split(path)[-1] #获取最后一段字符,准备转换

    file_path = os.path.split(path)[0] #获取前面的路径,为rename做准备

    try: #将最后一段有乱码的字符串转换,尝试过整个路径转换,不生效,估计是无法获取整个路径的编码格式吧。

    new_name = file_name.encode('cp437').decode('gbk')except: #先转换成Unicode再转换回gbk或utf-8

    new_name = file_name.encode('utf-8').decode('utf-8')

    path2= os.path.join(file_path, new_name) #将转换完成的字符串组合成新的路径

    try:

    os.renames(path, path2)#重命名文件

    except:print('renames error!!')returnpath2defdel_zip(path):'''删除解压出来的zip包'''path=chengeChar(path)if path.endswith('.zip') or path.endswith('.rar'):

    os.remove(path)elifos.path.isdir(path):for i inos.listdir(path):

    file_path=os.path.join(path, i)

    del_zip(file_path)#递归调用,先把所有的文件删除

    defunzip_file(z, unzip_path):'''解压zip包'''z.extractall(path=unzip_path)

    zip_list= z.namelist() #返回解压后的所有文件夹和文件list

    z.close()for zip_file inzip_list:

    path=os.path.join(unzip_path, zip_file)ifos.path.exists(path): main(path)defmain(path):'''主逻辑函数'''path=chengeChar(path)ifos.path.exists(path):

    unzip_path= os.path.split(path)[0] #解压至当前目录

    if path.endswith('.zip'):

    z= zipfile.ZipFile(path, 'r')

    unzip_file(z, unzip_path)elif path.endswith('.rar'):

    r=rarfile.RarFile(path)

    unzip_file(r, unzip_path)elifos.path.isdir(path):for file_name inos.listdir(path):

    path=os.path.join(path, file_name)ifos.path.exists(path): main(path)else:print(path)else:print('the path is not exist!!!')if __name__ == '__main__':#zip_path = r'C:\Users\ES-IT-PC-193\Desktop\aa\A.zip'

    zip_path = sys.argv[1] #接收传入的路径参数

    main(zip_path)if zipfile.is_zipfile(zip_path): #删除解压出来的压缩包

    del_zip(os.path.splitext(zip_path)[0]) #以后缀名切割

    展开全文
  • cetnos 解压tar.gz zip 都不用,解压出来只有文件夹没有目录 查看文件保护出现i 用chattr -i 操作 删除 继续删除提示 文件夹Operation not permitted ,此时登录用户root 不知道操作了什么删除不了, ...
  • 在Linux系统下压缩文件与要解压文件后缀是什么以及有没有都不影响,只要解压参数指明压缩包的压缩格式即可。 但压缩包若要跨系统到Windows下被解压,则必须将归档后缀(tar)与压缩格式后缀(zip、gz、bz2)都...
  • 请教大神,这是为什么 bin/mysqld_safe --user=mysql & # Next command is optional ![图片说明](https://img-ask.csdn.net/upload/201704/04/1491244374_944582.jpg) 然后: 执行 mysql -u root -p 再输入密码...
  • 直接解压,配置一下就可以运行了个人更喜欢压缩包的形式,所以本文记录的也是压死包形式的安装(配置)我下载的最新的是 mysql-5.7.17-win32.zip加压到mysql-5.7.17-win32文件夹,文提到的文件和文件夹都以此更...
  • 直接上传程序,office2007版的,各位打开压缩包后把职工管理数据库复制到这个路径“D:/My Documents/实验/职工管理.mdb”帮我看看增加新记录按钮哪里有问题,程序运行起来没有报错,但是不能向access添加内容,现...
  • (因为当初开发的目的是方便自己整理电脑的资料用的,所以,一切以方便易用前提,什么界面啊,布局啊,这些就没有怎么注意了.) 注意: 1)这个程序实际上是调用 7z.exe 进行压缩的,所以,请先下载 7zip 这个程序安装,再...
  • (典型的位置:C:\Windows\System32,这是32位的,64位的应该是systemWOW64什么的。。。) 在新建win32项目,记得添加一下如下: Project → Settings → Link选项卡,在Object/library modules下面的文本框的...
  • 什么是Kibana? ik分词器的安装 ...解压这个压缩包,并且取名jk-onalyzer(-d后面的就是解压后文件名字) 可以看到,解压成功了,但是解压成功后有件事情需要做,就是把这个压缩包给删掉,不然
  • 现在zip文件生成没有问题,但是使用密码加密始终没有搞定,请教各位有没有什么办法可以解决? 我在网上找到一篇文章讲类似的解决方案 [url=http://java.sys-con.com/node/1258827]...
  • 红帽杯2021 Misc

    2021-05-10 16:36:27
    压缩包解压后得到两个data文件,试了下找不到什么有用的东西,想到题目名字,发现文件data2用十六进制查看符合颜色的十六进制编码 这里补充一个使用颜色编写代码的知识点,该题就用到了这个点Piet 从图中可以看出...
  • MySQL学习笔记(一):MySQL安装和配置 为什么我懒得写博客,因为遇到问题百度就完事了 为什么我要写博客,因为百度到的一个个回答和博客都是傻逼! 下载MySQL 这个很简单,应该没有什么...把下载好的压缩包解压到你想
  • 改后缀名可以正常解压,改图片格式又可以正常预览。简单的说就是把图片与压缩文件用二进制的方式合并起来。图片数据在前,压缩文件数据在。虽然Batch脚本一条语句就可以生成,但是我们要讲究批量和自动化嘛,...
  • 为什么要分卷:整个文件有130MB,crocostone的上传权限不够,所以只能分卷压缩。已经测试:这4个压缩包,使用WinRAR/7zip/Haozip都能正确解压!!! 内容: 1、全世界唯一带“完整”目录的《算法导论》第二版中文...
  • 为什么要分卷:整个文件有130MB crocostone的上传权限不够 所以只能分卷压缩 已经测试:这4个压缩包 使用WinRAR 7zip Haozip都能正确解压 内容: 1 全世界唯一带“完整”目录的《算法导论》第二版中文版 2 目前...
  • 第一个博客,大概就是开始学数据库了...2.2.设置配置文件解压文件根目录里面一般有个my_default.ini的配置文件模板,自己把这个模板复制一份,然后名字改my.ini。然后对里面的内容进行设置,设置完成一定要把这
  • 1、下载软件压缩包文件解压后,首先点击“videoproc.exe”进行原版安装,注意调整安装目录 2、点击【安装】按钮即可一键操作完成,等待软件安装完毕,先不要运行程序,直接关闭即可 3、将破解补丁复制到软件根...
  • ICOFormat(photoshop制作ico图标插件)

    热门讨论 2014-07-02 08:33:00
    让你的Photoshop编辑制作ICO格式图标文件(ICOFormat支持图标文件插件) 相信很多制图的朋友都喜欢用PS,但是你能用... 如放入Plug-Ins目录后没有效果,请将ICOFormat.8bi文件放入\Plug-Ins\File Formats目录下。
  • 史上超高压缩软件2009

    2009-09-04 14:46:16
    -------------------------------------------------------------------------------------- 最新更新情况: 0.260 新内核的正式版,也是UDA的第三个正式版....2.问:用UDA压缩或解压为什么很慢? 答:UDA使用的压缩...

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

为什么压缩包解压后没有文件