python3 zip命令_Python调用zip命令正确操作方法解析
当我们在应用Python编程语言进行程序开发的时候,我们会发现这一语言可以帮助我们轻松的完成一些特定的功能需求。在这里我们就先一起来了解一下Python调用zip命令的使用方法,以此了解这一语言的操作方法。
Python调用zip命令例子程序是这样的:
#!/usr/bin/Python
# Filename: backup_ver1.py
import os
import time
# 1. The files and directories to be backed up are specified in a list.
source= ['/home/swaroop/byte', '/home/swaroop/bin']
# If you are using Windows, usesource= [r'C:\Documents', r'D:\Work']
or something like that
# 2. The backup must be stored in a main backup directory
target_dir='/mnt/e/backup/'# Remember to change this to what
you will be using
# 3. The files are backed up into a zip file.
# 4. The name of the zip archive is the current date and time
target=target_dir+ time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. We use the zip command (in Unix/Linux) to put the files
in a zip archive
zip_command="zip -qr '%s' %s"% (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'
由于上面Python调用zip命令例子是在Unix/Linux下的,需要改成windows
#!/usr/bin/Python
# Filename: backup_ver1.py
import os
import time
source=[r'C:\My Documents', r'D:\Work']
target_dir= r'F:\back up\'# Remember to change this to
what you will be using
target=target_dir+ time.strftime('%Y%m%d%H%M%S') + '.zip'
zip_command="zip -qr '%s' %s"% (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'
问题一:
当改好后,运行会发生异常,提示:"EOL while scanning single-quoted string",该异常出现在上面代码的粗体行
target_dir= r'F:\back up\'
在Python调用zip命令中,发生错误主要是因为转义符与自然符号串间的问题,看Python的介绍:
自然字符串
如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如r"Newlines are indicated by /n"。
如上所说, target_dir的值应该被视作 'F:\back up\',可是这里的转义符却被处理了。如果换成 r'F:\\back up\\' 转义符却没被处理,于是target_dir的值变为'F:\\back up\\'.将单引号变成双引号,结果还是如此。而如果给它加中括号【】,变成【r'F:\back up\'】,则程序又没问题...
于是,解决方法有2个:1)如上所说,加中括号;2)不使用前缀r,直接用转义符‘\’,定义变成target_dir = 'F:\\back up\\'.
问题二:
解决完问题一后,运行module,会提示backup fail. 检查如下:
1. 于是试着将source和target字符串打印出来检验是否文件路径出错,发现没问题
2. 怀疑是windows没有zip命令,在命令行里打‘zip’, 却出现提示帮助,证明可以用zip命令,而且有参数q,r;
3. 想起sqlplus里命令不接受空格符,于是试着将文件名换成没空格的, module成功运行...
现在问题换成如何能让zip命令接受带空格路径,google了一下,看到提示:“带有空格的通配符或文件名必须加上引号”
于是对 zip_command稍做修改,将
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
改成:
zip_command = "zip -qr \"%s\" \"%s\"" % (target, '\" \"'.join(source))
改后,module成功运行...
正确的script应为:
#!/usr/bin/Python
# Filename: backup_ver1.py
import os
import time
source=[r'C:\My Documents', r'D:\Work']
target_dir='F:\\back up\\'# Remember to change this to what
you will be using
target=target_dir+ time.strftime('%Y%m%d%H%M%S') + '.zip'
zip_command="zip -qr \"%s\" \"%s\"" % (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'
以上就是我们对Python调用zip命令的相关介绍。
【责任编辑:曹凯 TEL:(010)68476606】
点赞 0
python3 zip命令_Python调用zip命令正确操作方法解析相关推荐
- python使用shell命令_python 调用shell命令的方法
在python程序中调用shell命令,是件很酷且常用的事情-- 1. os.system(command) 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出 ...
- python解压7z文件_Python调用7zip命令实现文件批量解压
Python调用7zip命令实现文件批量解压 1.输入压缩文件所在的路径 2.可以在代码中修改解压到的文件路径和所需要解压的类型,列入,解压文件夹下面所有的mp4格式的文件 3.cmd 指的就是Pyt ...
- python 调用外部程序 终端异常_python调用外部命令
python调用外部命令 os.system: 输出在终端上,捕捉不到 os.popen: 只能捕捉到标准输出,捕捉不到标准错误输出 os.popen2: 返回2个对象,一个是标准输入,一个是标准输出 ...
- python调用shell命令-Python调用shell命令常用方法(4种)
方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...
- python调用shell命令-python调用shell命令小结
在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen.默认情况下subprocess.call的方法结果是返回值 ...
- python打开zip文件_Python操作Zip文件
Python操作Zip文件 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # ...
- python dict(zip)函数_python中zip()函数遍历多个列表方法
在对列表的元素进行找寻时,会频繁的说到遍历的理念.对于复杂的遍历要求,如多个列表中查找就显然不适合用for循环.本篇所要带来的是zip() 函数的方法,能够对多个迭代器进行遍历.下面我们就python ...
- python的zip函数_python的zip函数
zip()函数 它是Python的内建函数,(与序列有关的内建函数有:sorted().reversed().enumerate().zip()),其中sorted()和zip()返回一个序列(列表) ...
- python zip函数_Python的zip()函数用法
Python内置一个zip函数,这里不是压缩的意思,而是将数据组合在一起,zip起来,zip本身就还有拉链的意思哦.那么,zip这个函数,组合什么呢?将多个序列组合成一个复合序列. 看下面示例代码: ...
最新文章
- ROR与社区网站开发
- 在xcode调试断点不能停在代码区的终极解决方案
- 我的理想计算机应用作文,我的理想当编程师作文400字
- Android中的ViewPager2
- idea 中 git 修改了文件却无法提交(No Changes detected)
- 软件开发模型和软件过程模型_什么是软件和软件过程?
- linux虚拟存储技术,红帽Linux 7.0发布:整合虚拟存储技术
- 236 Lowest Common Ancestor of a Binary Tree
- Python开发利器PyCharm 2.7附注册码
- 《Hack与HHVM权威指南》——1.5.1 使用超级全局变量
- c语言实现--单向循环链表操作
- java开源社区 推荐_13 个最火的 Java 开源项目推荐!总有一个适合你!
- Hadoop 2.6.0 FileSplit和InputSplit和FileInputFormat
- Android软键盘的删除键和activity返回冲突
- JVM垃圾收集器基准报告 – Ionuț Baloșin 如何选择适合你的垃圾回收器
- Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
- 三、常规Dos命令附图
- 软件加密系统Themida应用程序保护指南(二):有哪些保护选项
- 数据仓库物理分层_数据仓库逻辑分层
- 软件测试之TCP、HTTP协议必知必会,面试必备
热门文章
- Kotlin - 面向对象之抽象类与接口
- 魔金(5)——手雷、爱神锁、牛头扣
- 两阶段市场投标策略。 电力市场程序。 日前日内竞价 提出了日前电力市场和实时电力市场下充电站的投标策略
- jquery,ajax动态从数据库加载数据并自动选中复选框
- 台湾大学林轩田机器学习技法课程学习笔记6 -- Support Vector Regression
- docker-tags 命令行获取docker远程仓库上指定镜像的tag列表
- 码农的自我修养 - 关于ARM你需要知道的
- 菊风2019年度报告已送达,请查收!
- 51nod_1000
- 三星电子中国研究院院长张代君:Bixby绝非炫技而是为提升用户体验而生