zip 错误:无效的命令参数(无法将 zip 文件写入终端)
Posted
技术标签:
【中文标题】zip 错误:无效的命令参数(无法将 zip 文件写入终端)【英文标题】:zip error: Invalid command arguments (cannot write zip file to terminal) 【发布时间】:2015-08-31 01:01:09 【问题描述】:我正在学习《A Bite of Python》一书。在书中输入示例后
import os
import time
# 1. The files and directories to be backed up are
# specified in a list.
# Example on Windows:
# source = ['"C:\\MY Documents"', 'C:\\Code']
# Example on Mac OS X and Linux:
source = ['/home/username/Downloads/books']
# Notice we had to use double quotes inside the string
# for names with spaces in it.
# 2. The backup must be stored in a
# main backup directory
# Example on Windows:
# target_dir = 'E:\\Backup'
# Example on Mac OS X and Linux:
target_dir = '/home/username/Downloads/backup'
# Remember to change this to which folder 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 + os.sep + \
time.strftime('%Y%m%d%H%M%S') + '.zip'
# Create target directory if it is not present
if not os.path.exists(target_dir):
os.mkdir(target_dir) # make directory
# 5. We use the zip commond to put the files in a zip archive
zip_command = "zip - r 0 1".format(target, ' '.join(source))
# Run the backup
print "Zip command is:"
print zip_command
print "Running:"
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FALIED'
我发消息zip error: Invalid command arguments (cannot write zip file to terminal)
我不知道哪里出了问题,我在这本书中输入了相同的代码。
有谁知道为什么会这样?
【问题讨论】:
在运行之前打印出zip_command
的值。对吗?
是zip_command的问题,我在里面放了多余的空间。谢谢。
【参考方案1】:
问题出在您正在创建的 zip
命令中,-
和 r
之间有一个额外的空格。示例 -
zip_command = "zip - r 0 1".format(target, ' '.join(source))
^
Notice the extra space
-
和 r
之间不应有空格。示例 -
zip_command = "zip -r 0 1".format(target, ' '.join(source))
另外,我想建议,最好使用 subprocess.call()
而不是 os.system
,为它提供命令的参数列表。示例 -
import subprocess
zip_command = ['zip','-r',target]
for s in source:
zip_command.append(s)
subprocess.call(zip_command)
这样会更容易看到错误。
【讨论】:
以上是关于zip 错误:无效的命令参数(无法将 zip 文件写入终端)的主要内容,如果未能解决你的问题,请参考以下文章
Linux命令(十六) 压缩或解压缩文件和目录 zip unzip
无法通过metaservlet api将talend作业zip文件从Windows机器上传到tac
java.lang.IllegalArgumentException:无效或不可读的 WAR 文件:打开 zip 文件时出错