作者mantour (朱子)
看板Python
标题Re: [问题] 这篇程式看不懂..哪位大大可以帮忙解释 …
时间Thu Apr 24 09:24:18 2008
※ 引述《purestone (天空之子)》之铭言:
: 大家好,我在自学python,以下这篇范例看不懂,拜托哪位大大帮忙解释一下..><
: 原始码:
: import os,time
: source=['/Users/swaroopch/Documents','/Users/swaroopch/Code']
: target_directory='/Users/swaroopch/Backup/'
: target=target_directory+time.strftime('%Y&n&d_%H%M%S')+'.zip'
: zip_command="zip-qr'%s'%s"%(target,''.join(source))
: print zip_command
: if os.system(zip_command)==0
: print 'Successful backup to',target
: else:
: print 'Backup Failed'
: 输出结果:
: zip-qr '/Users/swaroopch/Backup/20051113_234436.zip'/Users/swaroopch/Documents/
: /Users/swaroopch/Code/
: Successful backup to/Users/swaroopch/Backup/20051113_234436.zip
: 至於我哪里看不懂呢,其实是几乎看不懂!!!
: 这是咬一口周蟒的范例,这本书的前半部我还看的懂,但到了这边之後就完全卡住了,首先:
: 1.os和time是标准库里头的模组吗??我不懂这二个字怎突然出现的,所谓的标准库是指标
: 准函式库吗?还是标准模组库??本来就储存在记忆体吗??这二个模组的功能是什麽??
是安装的时候就附带的模组
模组也是个.py档,存在你的硬碟里,
里面定义了各种你可能会用到的函式和物件让你可以直接拿来用
: 2.target_directory这个字是作什麽用的??为什麽它不像需要前面的source需要[]??
请往回看"资料结构"这一段里面的"List"这个项目
: 3.target=target_directory+time.strftime('%Y&n&d_%H%M%S')+'.zip'这一行我完全看
: 呒,我特别不懂那些%Y&n&d_%H%M%S是从哪里冒出来的,又有什麽意思??另外这一行用了两个
: +号,可以解释一下吗??
"+"号可以用来合并二个sequence
常用的sequnece例如tuple , list , string
tuple
>>> a=(1,2,3)
>>> b=(4,5)
>>> a+b
(1, 2, 3, 4, 5)
list
>>> a=[1,2,3]
>>> b=[4,5]
>>> a+b
[1, 2, 3, 4, 5]
string
>>> a='hello '
>>> b='world!'
>>> a+b
'hello world!'
再来你问的time.strftime()
是time这个模组里的一个函式,想要知道这个函式怎麽用
要学会去查library reference
这种东西不可能有人去一个一个教你
以这个例子来说
从这个网页
http://docs.python.org/lib/
往下找到 14.2 time 这个module的介绍
点进去,往下找一下就可以看到 strftime() 这个函式的详细说明
如果你提到想知道一个模组(例如前面提的os,time)
中有还有哪些东西可以用,也可以从这个网页去找
: 4.zip_command="zip-qr'%s'%s"%(target,''.join(source))这一行我没一个字懂,结构更
: 不用说了,哪位大大可以解释一下吗??
这是一种格式化输出的语法
用简化一点的例子给你看
>>> name='sam'
>>> str="hello , I am %s"%name
>>> str
'hello , I am sam'
"hello , I am %s" 中的%s是说这边要填入一个字串变数
而後面紧跟着 %name 就是说前面的%s的地方要填的是 name这个变数
而name这个变数之前已经给了一个值('sam')了
所以产生的字串就会在%s的地方填入'sam'
这边如果你没有给name一个值的话,就会发生错误
>>> del name
>>> str="hello , I am %s"%name
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined
告诉你说name这个变数还没有被定义
还有 ''.join(source)的
功能是把 source 这个list里面的字串,用 '' 里面的东西连接起来
例如
>>> 'a'.join(['ABC','DEF','HIJ'])
'ABCaDEFaHIJ'
>>> '**'.join(['ABC','DEF','HIJ'])
'ABC**DEF**HIJ'
而''.join(['ABC','DEF','HIJ'])
就会把ABC DEF HIJ 直接连起来,中间没有任何东西隔开
>>> ''.join(['ABC','DEF','HIJ'])
'ABCDEFHIJ'
其实这边应该还要了解到:
join是str这个类别(class)中的一个方法(method),而''是这个class的一个instance
学python还是要学一点物件导向的观念,这个前面的章节应该也有提到一点
: 5.os.system(zip_command)这个词是什麽意思?它是函式吗??不懂哩~
: 6.输出结果是从哪里来的啊??我看不懂它是怎冒出来的..
: 嗯~其实几乎不懂,但大概列举了上述六点问题,拜托哪位高人指点迷津一下吧~><
最後还是觉得你可能是心急跳太快了,你问的一些东西其实前面的章节都有到相关概念
如果前面有看懂,这边不应该再出现问题的喔
我也是新手
如果我写的不是很正确,还请版友指正
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.213.158