当我们在应用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命令正确操作方法解析相关推荐

  1. python使用shell命令_python 调用shell命令的方法

    在python程序中调用shell命令,是件很酷且常用的事情-- 1. os.system(command) 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出 ...

  2. python解压7z文件_Python调用7zip命令实现文件批量解压

    Python调用7zip命令实现文件批量解压 1.输入压缩文件所在的路径 2.可以在代码中修改解压到的文件路径和所需要解压的类型,列入,解压文件夹下面所有的mp4格式的文件 3.cmd 指的就是Pyt ...

  3. python 调用外部程序 终端异常_python调用外部命令

    python调用外部命令 os.system: 输出在终端上,捕捉不到 os.popen: 只能捕捉到标准输出,捕捉不到标准错误输出 os.popen2: 返回2个对象,一个是标准输入,一个是标准输出 ...

  4. python调用shell命令-Python调用shell命令常用方法(4种)

    方法一.使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令 ...

  5. python调用shell命令-python调用shell命令小结

    在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen.默认情况下subprocess.call的方法结果是返回值 ...

  6. python打开zip文件_Python操作Zip文件

    Python操作Zip文件 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # ...

  7. python dict(zip)函数_python中zip()函数遍历多个列表方法

    在对列表的元素进行找寻时,会频繁的说到遍历的理念.对于复杂的遍历要求,如多个列表中查找就显然不适合用for循环.本篇所要带来的是zip() 函数的方法,能够对多个迭代器进行遍历.下面我们就python ...

  8. python的zip函数_python的zip函数

    zip()函数 它是Python的内建函数,(与序列有关的内建函数有:sorted().reversed().enumerate().zip()),其中sorted()和zip()返回一个序列(列表) ...

  9. python zip函数_Python的zip()函数用法

    Python内置一个zip函数,这里不是压缩的意思,而是将数据组合在一起,zip起来,zip本身就还有拉链的意思哦.那么,zip这个函数,组合什么呢?将多个序列组合成一个复合序列. 看下面示例代码: ...

最新文章

  1. ROR与社区网站开发
  2. 在xcode调试断点不能停在代码区的终极解决方案
  3. 我的理想计算机应用作文,我的理想当编程师作文400字
  4. Android中的ViewPager2
  5. idea 中 git 修改了文件却无法提交(No Changes detected)
  6. 软件开发模型和软件过程模型_什么是软件和软件过程?
  7. linux虚拟存储技术,红帽Linux 7.0发布:整合虚拟存储技术
  8. 236 Lowest Common Ancestor of a Binary Tree
  9. Python开发利器PyCharm 2.7附注册码
  10. 《Hack与HHVM权威指南》——1.5.1 使用超级全局变量
  11. c语言实现--单向循环链表操作
  12. java开源社区 推荐_13 个最火的 Java 开源项目推荐!总有一个适合你!
  13. Hadoop 2.6.0 FileSplit和InputSplit和FileInputFormat
  14. Android软键盘的删除键和activity返回冲突
  15. JVM垃圾收集器基准报告 – Ionuț Baloșin 如何选择适合你的垃圾回收器
  16. Msc.Marc模拟平板圆孔处应力集中:二维轴对称线弹性分析
  17. 三、常规Dos命令附图
  18. 软件加密系统Themida应用程序保护指南(二):有哪些保护选项
  19. 数据仓库物理分层_数据仓库逻辑分层
  20. 软件测试之TCP、HTTP协议必知必会,面试必备

热门文章

  1. Kotlin - 面向对象之抽象类与接口
  2. 魔金(5)——手雷、爱神锁、牛头扣
  3. 两阶段市场投标策略。 电力市场程序。 日前日内竞价 提出了日前电力市场和实时电力市场下充电站的投标策略
  4. jquery,ajax动态从数据库加载数据并自动选中复选框
  5. 台湾大学林轩田机器学习技法课程学习笔记6 -- Support Vector Regression
  6. docker-tags 命令行获取docker远程仓库上指定镜像的tag列表
  7. 码农的自我修养 - 关于ARM你需要知道的
  8. 菊风2019年度报告已送达,请查收!
  9. 51nod_1000
  10. 三星电子中国研究院院长张代君:Bixby绝非炫技而是为提升用户体验而生