NameError: name ‘Robot’ is not defined

麻烦来了,随着继续看Byte-of-python 发现会遇到一些莫名其妙的问题:

[embed_snipt:Pll]

上面这段代码运行结果是:

Traceback (most recent call last):
File “F:\PJ\PythonPJ\objvar.py”, line 1, in <module>
class Robot:
File “F:\PJ\PythonPJ\objvar.py”, line 34, in Robot
droid1 = Robot(‘R2-D2’)
NameError: name ‘Robot’ is not defined

奇怪,只好再检查一次代码中有没有一些低级错误…暂时还没有什么发现…问题是拷贝PDF中提到的代码也是同样的错误…为什么Robot会没有define…

似乎是缩进的问题,调整了缩进之后的代码:

[embed_snipt:Plm]

这下可以initialize Robot了。可是问题又来,

(InitializingR2-D2)
Greetings, my masters call me R2-D2
Traceback (most recent call last):
File “F:\PJ\PythonPJ\objvar.py”, line 36, in <module>
Robot.howMany()
TypeError: howMany() takes exactly 1 positional argument (0 given)

**Note:本文中用Snipt.org输出的代码,在RSS阅读器中没法输出…

zip I/O error: Invalid argument?

最近不知道为什么有回头开始看”Byte of Python V1.91″ 今天在读到72页“The solution”的时候遇到了一个问题。需要用python来写一段代码,备份系统的某个,或者某些文件夹。

原文的代码是这样的:

[embed_snipt:Ooi]

我做了些许改动来符合我的现实状况:

[embed_snipt:Ooh]

可是,当我在Console中运行backup.py的时候,系统提示“zip I/O error: Invalid argument”… 奇怪了。Google得到的结果大多是当在压缩某个大文件的时候才出现这样的错误。而我的目标文件夹根本就只有5KB而已啊!

于是在“if os.system(zip_command) == 0:”之前加入了一句“print(zip_command)”看一下到底执行的zip命令是什么东西

[embed_snipt:Ooj]

终于,被我看到输出的命令是”zip -qr F:\PJackup\20090327162409.zip F:\PJ\PythonPJ”  我的目标路径变成了乱码…看来是“\b”被转义了…于是把backup变成了Backup。就没有问题啦。

另外,想如果下次还碰到这样的转义状况怎么办? 把路径改成 F:\\PJ\\backup也是一样OK哒 :-)