|
简明python教程中有这么一个例子:
- #!/usr/bin/python
- # Filename: backup_ver1.py
- import os
- import time
- source = ['/home/swaroop/byte', '/home/swaroop/bin']
- target_dir = '/mnt/e/backup/' # 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'
复制代码
source = ['/home/swaroop/byte', '/home/swaroop/bin'] 写成这种有同级别目录的路径,执行这个python脚本,没有异常,
而我写成 source = ['/data/test', '/home/swaroop/bin'] 时却报很多行的这个警告,(test和bin都是目录)
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
zip warning: No such device or address
这是啥情况?
如果 source = ['/home/swaroop/byte', '/home/swaroop/bin']
' '.join(source) 之后把source列表变成了 /home/swaroop/byte /home/swaroop/bin
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) 相当于 zip_command = "zip -qr /mnt/e/backup/日期时间.zip /home/swaroop/byte /home/swaroop/bin 把/home/swaroop/目录下的 byte和bin目录添加到压缩文件中,
如果 source = ['/data/test', '/home/swaroop/bin'], ' '.join(source) 之后把source列表变成了/data/test /home/swaroop/bin
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) 相当于 zip_command = "zip -qr /mnt/e/backup/日期时间.zip /data/test /home/swaroop/bin 把/data/test目录下的文件或目录,和home/swaroop/bin目录下的文件或目录 添加到压缩文件中
这有什么不同吗?同样是两个目录,为什么source = ['/data/test', '/home/swaroop/bin']这样写的时候会报出警告?
而且测试时发现确实是把/data/test/ 和 /home/swaroop/bin两个目录压缩在了一个压缩文件中,只是执行脚本时却报出警告。
难道zip压缩时,不能将多个完全不同级别的目录放在一起压缩?
|
|