我一直在阅读“Python的一个字节”来学习语法和方法等......
我刚开始使用简单的备份脚本(直接来自本书):
#!/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 = ['"C:\\My Documents"', 'C:\\Code']
# 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
target_dir = '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 + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. We use the zip command to put the files in a zip archive
zip_command = "zip -qr {0} {1}".format(target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print('Successful backup to', target)
else:
print('Backup FAILED')
是的,它失败了。如果我在终端中运行zip命令它工作正常。我认为它失败了,因为zip_command
实际上从未运行过。我不知道如何运行它。
只需输入zip_command
即可。 (我使用的是python 3.1)
答案 0 :(得分:1)
如果您可以将代码格式化为代码,那将对我们有所帮助;选择代码部分,然后单击编辑器工具栏中的“代码示例”按钮。图标看起来像“101/010”,如果您将鼠标指针放在上面,黄色的“工具提示”框会显示“代码示例< pre>< / pre> Ctrl + K”
我刚尝试过,如果您将代码粘贴到StackOverflow编辑器中,带有“#”的行将为粗体。所以粗线是评论。到目前为止一切都很好。
您的字符串似乎包含反斜杠字符。您需要将每个反斜杠加倍,如下所示:
target_dir = 'E:\\Backup'
这是因为Python专门处理反斜杠。它引入了一个“反斜杠转义”,它允许您在引用的字符串中放置引号:
single_quote = '\''
您还可以使用Python“原始字符串”,它具有更简单的反斜杠规则。原始字符串由r"
或r'
引入,分别由"
或'
终止。示例:
# both of these are legal
target_dir = r"E:\Backup"
target_dir = r'E:\Backup'
答案 1 :(得分:1)
在shell中手动输入命令时,您确定Python脚本看到了您可以访问的相同环境吗?当Python启动命令时,可能是zip不在路径上。
答案 2 :(得分:0)
我建议的下一步是修改脚本以打印命令字符串,然后查看字符串并查看它是否正确。
您可以尝试的另一件事是创建一个打印出环境变量的批处理文件,让Python运行它,并查看环境的样子。特别是PATH。
以下是一个建议的示例:
set
echo Trying to run zip...
zip
将它们放在名为C:\mytest.cmd
的批处理文件中,然后让你的Python代码运行它:
result_code = os.system("C:\\mytest.cmd")
print('Result of running mytest was code', result_code)
如果它有效,你会看到打印出的环境变量,然后它会回显“试图运行zip ...”,然后如果zip运行它会打印一条带有zip版本号的消息以及如何运行它
答案 3 :(得分:0)
zip命令只适用于linux而不适用于Windows ..这就是为什么它会出错...