新手需要Python教程的帮助
我是一个新手,正在学习python(3.0)的一个字节。这是我使用过的第一种编程语言。我被困在一个点上,你做一个简单的程序,创建一个备份zip文件(第75页)。我正在用Python3.1运行Windows7(64位)。在此之前,我安装了GNUWin32+源代码,并将C:\ProgramFiles(x86)\GNUWin32\bin添加到我的Path环境变量中。以下是节目:新手需要Python教程的帮助,python,Python,我是一个新手,正在学习python(3.0)的一个字节。这是我使用过的第一种编程语言。我被困在一个点上,你做一个简单的程序,创建一个备份zip文件(第75页)。我正在用Python3.1运行Windows7(64位)。在此之前,我安装了GNUWin32+源代码,并将C:\ProgramFiles(x86)\GNUWin32\bin添加到我的Path环境变量中。以下是节目: #!C:\Python31\mystuff # Filename : my_backup_v1.py import os
#!C:\Python31\mystuff
# Filename : my_backup_v1.py
import os
import time
# backing up a couple small files that I made
source = [r'C:\AB\a', r'C:\AB\b']
#my back up directory
target_dir = 'C:\\Backup'
#name of back up file
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
zip_command = "zip -qr {0} {1}".format(target,' '.join(source))
print(zip_command)
if os.system(zip_command) == 0:
print('Successful backup to', target)
else:
print('Backup failed!')
print('source files are', source)
print('target directory is', target_dir)
print('target is', target)
输出:
zip -qr C:\Backup\20100106143030.zip C:\AB\a C:\AB\b
Backup failed!
source files are ['C:\\AB\\a', 'C:\\AB\\b']
target directory is C:\Backup
target is C:\Backup\20100106143030.zip
本教程包含一点疑难解答建议:在python shell提示符中复制并粘贴zip_命令,以查看该命令是否至少有效:
>>> zip -qr C:\Backup\20100106143030.zip C:\AB\a C:\AB\b
SyntaxError: invalid syntax (<pyshell#17>, line 1)
>>zip-qr C:\Backup\20100106143030.zip C:\AB\a C:\AB\b
SyntaxError:无效语法(,第1行)
由于这不起作用,教程说要获得更多帮助,请阅读GNUWin32手册。我已经看过了,还没有看到任何能帮助我的东西。为了查看zip函数是否正常工作,我提供了帮助(zip)并获得以下信息:
>>> help(zip)
Help on class zip in module builtins:
class zip(object)
| zip(iter1 [,iter2 [...]]) --> zip object
|
| Return a zip object whose .__next__() method returns a tuple where
| the i-th element comes from the i-th iterable argument. The .__next__()
| method continues until the shortest iterable in the argument sequence
| is exhausted and then it raises StopIteration.
|
| Methods defined here:
|
| __getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
| __iter__(...)
| x.__iter__() <==> iter(x)
|
| __next__(...)
| x.__next__() <==> next(x)
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object at 0x1E1B8D80>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
>帮助(zip)
关于内置类zip模块的帮助:
类zip(对象)
|zip(iter1[,iter2[…])-->zip对象
|
|返回一个zip对象,其.\uuuuuuuuuuuuuuuuu next()方法返回一个元组,其中
|第i个元素来自第i个iterable参数。下一个
|方法继续,直到参数序列中最短的iterable
|耗尽,然后引发StopIteration。
|
|此处定义的方法:
|
|_uuugetAttribute_uuuu(…)
|x.uuu getattribute_uuuu('name')x.name
|
|_uuuiter_uuuuuuuuu(…)
|x.国际热核聚变实验堆(x)
|
|下一个…)
|x.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
|
| ----------------------------------------------------------------------
|此处定义的数据和其他属性:
|
|新的
|T.。\uuuu new\uuuuu(S,…)->类型为S的新对象,是T的子类型
不幸的是,我还不能真正理解“帮助”。不过,我对zip函数进行了一些研究,看看它是如何工作的
>>> zip (r'C:AB\a')
<zip object at 0x029CE8C8>
zip(r'C:AB\a')
因此,zip函数似乎可以工作,但我想我没有正确地使用它。请帮助我,记住我还没有太多的编程经验。如果您想查看本教程,请访问www.swaroopch.com/notes/Python 这并不是为shell命令
zip
提供帮助,而是为python函数zip
提供帮助,它与zip文件压缩无关。原因“zip-qr C:\Backup\2010010614330.zip C:\AB\a C:\AB\b
”在提示下失败是因为在本例中,“zip”应该是你发送给操作系统的命令。。。与Python无关
恐怕这有点让人困惑——当您执行“zip(r'C:AB\a')
”时,您使用的是Python内置的zip()
函数,它与您尝试执行的操作无关
你有正确的目录结构吗?我的意思是,C:\AB\a和C:\AB\b是否存在
编辑-您应该将该长“zip”行复制/粘贴到命令提示符(按windows键+R,然后键入“cmd”并按enter键),以查看其是否有效;不是pythonshell。一些改进建议: 使用
子流程.call([command',arg',arg',arg'])
命令调用外部zip命令。这将确保正确调用命令并正确转义数据
使用os.path.join
将路径组件干净地连接在一起。这也将有助于防止细微的错误
在python中尝试zip命令之前,请确保它在命令提示符下工作
--
除此之外,它看起来还不错
PS.zip()
是一个内置项,用于连接两个可编程项。不用于压缩文件
重要提示:请参阅安德鲁的评论(复制到此处供参考):
看起来您应该在终端提示符而不是python提示符下执行
zip-qr C:\Backup\20100106143030.zip C:\AB\a C:\AB\b
。这有帮助吗?——安德鲁·麦格雷戈3分钟前
>>> zip -qr C:\Backup\20100106143030.zip C:\AB\a C:\AB\b
听起来像是应该在操作系统的shell中键入的命令,而不是在python的shell中键入的命令。也许你可以试试
os.system('zip -qr C:\Backup\20100106143030.zip C:\AB\a C:\AB\b')
在python shell中…看起来您应该在终端提示符而不是python提示符下执行
zip-qr C:\Backup\20100106143030.zip C:\AB\a C:\AB\b
。这有帮助吗?是的,C:AB\a和C:\AB\b存在。它们是我创建的小文件夹。好的,python中的zip函数与我在这里应该使用的zip是分开的。在这种情况下,我需要做什么才能让操作系统使用zip命令?如果有帮助的话,我已经安装了7zip&GNUWin32。os.system(zip\u命令)
应该可以工作,就像您在代码中所做的那样。在Windows命令提示符下尝试该命令(zip-qr C:…等)(将说明编辑到我的帖子中)。确定在Windows命令提示符下尝试了该命令,但未工作错误消息:“zip”未被识别为内部或外部命令可操作程序或批处理文件。那么现在呢?这意味着Windows找不到“zip”。仔细检查你的路径变量,检查你所说的添加到路径中的bin文件夹,确保其中有一个“zip”程序。让它工作起来,我想我输入的路径变量是错误的。我将路径复制粘贴到path变量中,现在可以使用了,谢谢!复制粘贴到shell输出中的值是1,所以我猜这意味着它成功了?但我没有看到备份文件。我尝试将其复制到命令提示符,似乎操作系统出于某种原因无法识别命令“zip”。我还不熟悉subprocess.call,所以我必须仔细阅读如何使用它来调用zip命令。