Crossin的编程教室

标题: 关于文件的拷贝 [打印本页]

作者: Tony    时间: 2016-10-25 16:53
标题: 关于文件的拷贝
croosin先生:
我在python简明教程中看到了拷贝文件:
我想把D:\home 和D:\new 下的.zip文件拷贝到D:下

代码如下:

import os
import time

source = [r'D:\home', r'D:\new']

target_dir = r'D:'

target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'

zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))


if os.system(zip_command) == 0:
    print 'Successful backup to', target
else:
    print 'Backup FAILED'

结果报错:

Could not create output file (was replacing the original zip file)


请问这是怎么回事?
谢谢!
作者: crossin先生    时间: 2016-10-25 23:27
你是不是已经有了个一个zip的文件
你把你的zip_command输出出来,直接复制到控制台这个目录下跑一下试试行不行
作者: Tony    时间: 2016-10-26 09:05
crossin先生 发表于 2016-10-25 23:27
你是不是已经有了个一个zip的文件
你把你的zip_command输出出来,直接复制到控制台这个目录下跑一下试试行 ...

我只是在source中: D:\home 和D:\new 下分别有一个.zip文件
在target中:\下没有文件。

我直接输出zip_command:结果是:zip -qr 'D:20161026085824.zip' D:\home D:\new
直接复制到控制台这个目录下跑一下 这个我不知道怎么弄.....
作者: Tony    时间: 2016-10-26 09:05
本帖最后由 Tony 于 2016-10-26 09:06 编辑
crossin先生 发表于 2016-10-25 23:27
你是不是已经有了个一个zip的文件
你把你的zip_command输出出来,直接复制到控制台这个目录下跑一下试试行 ...

我只是在source中: D:\home 和D:\new 下分别有一个.zip文件
在target中: D:\下没有文件。

我直接输出zip_command:结果是:zip -qr 'D:20161026085824.zip' D:\home D:\new
直接复制到控制台这个目录下跑一下 这个我不知道怎么弄.....
作者: crossin先生    时间: 2016-10-26 18:14
Tony 发表于 2016-10-26 09:05
我只是在source中: D:\home 和D:\new 下分别有一个.zip文件
在target中: D:\下没有文件。

在你的文件夹按住shift点右键,选择在此处打开命令提示符,然后在里面运行这个命令,看看提示什么。
我觉得是你这个zip命令本身有问题,你再确认下看看

d: 后面是不是应该有个\
作者: Tony    时间: 2016-10-26 22:23
crossin先生 发表于 2016-10-26 18:14
在你的文件夹按住shift点右键,选择在此处打开命令提示符,然后在里面运行这个命令,看看提示什么。
我觉 ...

我分别在以上文件夹右键在终端操作后,还是不行。。
这是那本书的源代码:

  1. #!/usr/bin/python
  2. # Filename: backup_ver1.py
  3. import os
  4. import time
  5. # 1. The files and directories to be backed up are specified in a list.
  6. source = ['/home/swaroop/byte', '/home/swaroop/bin']
  7. # If you are using Windows, use source = [r'C:\Documents', r'D:\Work'] or something like that
  8. # 2. The backup must be stored in a main backup directory
  9. target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using
  10. # 3. The files are backed up into a zip file.
  11. # 4. The name of the zip archive is the current date and time
  12. target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
  13. # 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
  14. zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
  15. # Run the backup
  16. if os.system(zip_command) == 0:
  17.     print 'Successful backup to', target
  18. else:
  19.     print 'Backup FAILED'
复制代码
我照着这个写的,不知道哪里出了问题。
作者: crossin先生    时间: 2016-10-26 23:32
Tony 发表于 2016-10-26 22:23
我分别在以上文件夹右键在终端操作后,还是不行。。
这是那本书的源代码:我照着这个写的,不知道哪里出 ...

它的target dir有/,你的没有啊,你的路径不对。也就是说首先你这个 zip 压缩命令本身不对,那跟你python代码就没关系了
最起码一个问题,你这个路径也应该是 D:\20161026085824.zip
如果在命令行里直接运行都不行,那你这个代码是去调用这个命令,又怎么可能成功。
你看看课程里有一课叫常用命令行,或者网上搜下关于命令行、文件路径方面的基础
作者: crossin先生    时间: 2016-10-26 23:34
Tony 发表于 2016-10-26 22:23
我分别在以上文件夹右键在终端操作后,还是不行。。
这是那本书的源代码:我照着这个写的,不知道哪里出 ...

对了还有个问题,他可以这么写,是因为linux下面默认就有 zip 命令,但windows默认并没有啊。这你怎么可能成功,你要做这个先保证windows上能使用 zip 命令

作者: Tony    时间: 2016-10-27 08:46
crossin先生 发表于 2016-10-26 23:34
对了还有个问题,他可以这么写,是因为linux下面默认就有 zip 命令,但windows默认并没有啊。这你怎么可能 ...

哦,我还以为这个命令是通用的,谢谢了哈!我去查一下




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5