1、yunshichen我 相 信 人 生 是 值 得 活 的 ,尽 管 人 在 一 生 中 必 须 遭 受 痛 苦 ,卑 劣 ,残 酷 ,不 幸 和 死 亡 的 折 磨 ,我 依 然 深信 如 此 .但 我 认 为 人 生 不 一 定 要 有 意 义 ,只 是 对 一 些 人 而 言 ,他 们 可 以 使 人 生 有 意 义 .-J 赫 胥 黎Python 3 教 程 一 :入 门Python已 经 是 3.1版 本 了 ,与 时 俱 进 更 新 教 程 . 本 文 适 合 有 Java编 程 经 验 的 程 序 员 快 速熟 悉 Python 本 文 程 序 在 windowsxp+pytho
2、n3.1a1 测 试 通 过 . 本 文 提 到 的 idle指 pythonshell,即 安 装python 后 你 在 菜 单 看 到 的IDLE(pythongui) 在 idle里 ctrl+n可 以 打 开 一 个 新 窗 口 ,输 入 源 码 后 ctrl+s可 以 保 存 ,f5运 行 程序 . 凡 打 开 新 窗 口 即 指 ctrl+n的 操 作 .1 你 好#打 开 新 窗 口 ,输 入 :#!/usr/bin/python#-*-coding:utf8-*-s1=input(“Inputyourname:“)print(“你 好 ,%s“%s1)知 识 点 :*inpu
3、t(“某 字 符 串 “)函 数 :显 示 “某 字 符 串 “,并 等 待 用户 输 入 .*print()函 数 :如 何 打 印 .* 如 何 应 用 中 文* 如 何 用 多 行 注 释2 字 符 串 和 数 字但 有 趣 的 是 ,在 javascript里 我 们 会 理 想 当 然的 将 字 符 串 和 数 字 连 接 ,因 为 是 动 态 语 言 嘛 .但在 Python里 有 点 诡 异 ,如 下 :#!/usr/bin/pythona=2b=“test“c=a+b运 行 这 行 程 序 会 出 错 ,提 示 你 字 符 串 和 数 字 不 能连 接 ,于 是 只 好 用 内
4、 置 函 数 进 行 转 换#!/usr/bin/python#运 行 这 行 程 序 会 出 错 ,提 示 你 字 符 串 和 数 字 不 能 连 接 ,于是 只 好 用 内 置 函 数 进 行 转 换a=2b=“test“c=str(a)+bd=“1111“e=a+int(d)#Howtoprintmultiplyvaluesprint(“cis%s,eis%i“%(c,e)知 识 点 :* 用 int和 str函 数 将 字 符 串 和 数 字 进 行 转 换* 打 印 以 #开 头 ,而 不 是 习 惯 的 /* 打 印 多 个 参 数 的 方 式3 列 表#!/usr/bin/pyt
5、hon#-*-coding:utf8-*-#列 表 类 似 Javascript的 数 组 ,方 便 易 用#定 义 元 组word=a,b,c,d,e,f,g#如 何 通 过 索 引 访 问 元 组 里 的 元 素a=word2print(“ais:“+a)b=word1:3print(“bis:“)print(b)#index1and2elementsofword.c=word:2print(“cis:“)print(c)#index0and1elementsofword.d=word0:print(“dis:“)print(d)#Allelementsofword.#元 组 可 以 合
6、并e=word:2+word2:print(“eis:“)print(e)#Allelementsofword.f=word-1print(“fis:“)print(f)#Thelastelementsofword.g=word-4:-2print(“gis:“)print(g)#index3and4elementsofword.h=word-2:print(“his:“)print(h)#Thelasttwoelements.i=word:-2print(“iis:“)print(i)#Everythingexceptthelasttwocharactersl=len(word)print(
7、“Lengthofwordis:“+str(l)print(“Addsnewelement“)word.append(h)print(word)#删 除 元 素delword0print(word)delword1:3print(word)知 识 点 :* 列 表 长 度 是 动 态 的 ,可 任 意 添 加 删 除 元 素 .* 用 索 引 可 以 很 方 便 访 问 元 素 ,甚 至 返 回 一 个 子 列 表* 更 多 方 法 请 参 考 Python的 文 档4 字 典#!/usr/bin/pythonx=a:aaa,b:bbb,c:12print(xa)print(xb)print(
8、xc)forkeyinx:print(“Keyis%sandvalueis%s“%(key,xkey)知 识 点 :* 将 他 当 Java的 Map来 用 即 可 .5 字 符 串比 起 C/C+,Python处 理 字 符 串 的 方 式 实 在太 让 人 感 动 了 .把 字 符 串 当 列 表 来 用 吧 .#!/usr/bin/pythonword=“abcdefg“a=word2print(“ais:“+a)b=word1:3print(“bis:“+b)#index1and2elementsofword.c=word:2print(“cis:“+c)#index0and1elem
9、entsofword.d=word0:print(“dis:“+d)#Allelementsofword.e=word:2+word2:print(“eis:“+e)#Allelementsofword.f=word-1print(“fis:“+f)#Thelastelementsofword.g=word-4:-2print(“gis:“+g)#index3and4elementsofword.h=word-2:print(“his:“+h)#Thelasttwoelements.i=word:-2print(“iis:“+i) #Everythingexceptthelasttwochar
10、actersl=len(word)print(“Lengthofwordis:“+str(l)中 文 和 英 文 的 字 符 串 长 度 是 否 一 样 ?#!/usr/bin/python#-*-coding:utf8-*-s=input(“输 入 你 的 中 文 名 ,按 回 车 继 续 “);print(“你 的 名 字 是 :“+s)l=len(s)print(“你 中 文 名 字 的 长 度 是 :“+str(l)知 识 点 : 类 似 Java,在 python3里 所 有 字 符 串 都是 unicode,所 以 长 度 一 致 .6 条 件 和 循 环 语 句#!/usr/bi
11、n/python#条 件 和 循 环 语 句x=int(input(“Pleaseenteraninteger:“)ifx日 一 二 三 四 五 六29 30 31 1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 1 23 4 5 6 7 8 9导 航 IT博 客 首 页 新 随 笔 联 系 聚 合 管 理统 计 随 笔 -40 文 章 -0 评 论 -20 引 用 -0常 用 链 接 我 的 随 笔 我 的 评 论 我 参 与 的 随 笔留 言 簿 (4) 给 我 留 言 查 看 公 开
12、 留 言 查 看 私 人 留 言随 笔 分 类 C/C+(7)(rss) C+/Qt4(2)(rss) Db/Sql(1)(rss) Ext2(2)(rss) Java(1)(rss) JavaScript(2)(rss) Python2.x(4)(rss) Python3(4)(rss) Toolsprint(“diris:“+p)print(“fileis:“+f)# case2:drv,left=os.path.splitdrive(spath);print(“driveris:“+drv)print(“leftis:“+left)# case3:f,ext=os.path.splite
13、xt(spath);print(“fis:“+f)print(“extis:“+ext) 知 识 点 : 这 三 个 函 数 都 返 回 二 元 组 .*case1 分 隔 目 录 和 文 件 名*case2 分 隔 盘 符 和 文 件 名*case3 分 隔 文 件 和 扩 展 名总 结 :5 个 函 数 os.walk(spath) os.path.split(spath) os.path.splitdrive(spath) os.path.splitext(spath) os.path.join(path1,path2)3 复 制 文 件import shutilimport osimp
14、ort os.pathsrc=“d:downloadtestmyfile1.txt“dst=“d:downloadtestmyfile2.txt“dst2=“d:/download/test/测 试 文 件 夹 .txt“dir1=os.path.dirname(src)print(“dir1%s“%dir1)if(os.path.exists(src)=False):os.makedirs(dir1)f1=open(src,“w“)f1.write(“linean“)f1.write(“linebn“)f1.close()shutil.copyfile(src,dst)shutil.copy
15、file(src,dst2)f2=open(dst,“r“)for line in f2:print(line)f2.close()# 测 试 复 制 文 件 夹 树try:srcDir=“d:/download/test“dstDir=“d:/download/test2“# 如 果 dstDir已 经 存 在 ,那 么 shutil.copytree方 法会 报 错 !# 这 也 意 味 着 你 不 能 直 接 用 d:作 为 目 标 路 径 .shutil.copytree(srcDir,dstDir)except Exceptionaserr:print (err) 知 识 点 :*s
16、hutil.copyfile:如 何 复 制 文 件*os.path.exists:如 何 判 断 文 件 夹 是 否 存 在*shutil.copytree:如 何 复 制 目 录 树总 结 :4 个 函 数 os.path.dirname(path) os.path.exists(path) shutil.copyfile(src,dst) shutil.copytree(srcDir,dstDir)4 实 战 :文 件 备 份 小 程 序import osimport shutilimport datetime作 用 : 将 目 录 备 份 到 其 他 路 径 。实 际 效 果 :假 设
17、 给 定 目 录“/media/data/programmer/project/python“ ,备 份 路 径 “/home/diegoyun/backup/“ ,则 会 将 python目 录 备 份 到 备 份 路 径 下 , 形 如 :/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz 用 法 :更 改 这 两 个 参 数 .backdir:备 份 目 的 地 .copydirs:想 要 备 份 的 文 件 夹 .def mainLogic():#adddirsyouwanttocopybackdir=“d:test“prin
18、t(backdir)copydirs=copydirs.append(“d:temp“);#copydirs.append(“d:test“);print ( “Copyingfiles =“)start=datetime.datetime.now()#genadatafolderforbackupbackdir =os.path.join(backdir,start.strftime( “ %Y-%m-%d“)#print(“backdiris:“+backdir)kc=0for d in copydirs:kc=kc+copyFiles(d,backdir)end=datetime.dat
19、etime.now()print ( “Finished!=“)print(“Totalfiles: “ + str(kc)print ( “ Elapsed time : “ + str(end -start).seconds)+“ seconds“)def copyFiles(copydir,backdir):prefix=getPathPrefix(copydir)#print(“prefixis:“+prefix)i=0for dirpath,dirnames,filenames in os.walk(copydir):for name in filenames:oldpath=os.
20、path.join(dirpath,name)newpath=omitPrefix(dirpath,prefix)print(“backdiris:“+backdir)newpath=os.path.join(backdir,newpath)print(“newpathis:“+newpath)if os.path.exists(newpath)!=True:os.makedirs(newpath)newpath=os.path.join(newpath,name)print(“From:“+oldpath+“ to:“+newpath)shutil.copyfile(oldpath,newp
21、ath)i=i+1return idef getPathPrefix(fullpath): #Giving/media/data/programmer/project/,gettheprefix#/media/data/programmer/l=fullpath.split(os.path.sep)#print(str(l-1=“)if l-1=“:tmp=l-2else:tmp=l-1return fullpath0:len(fullpath) - len(tmp) -1def omitPrefix(fullpath,prefix):#Giving /media/data/programme
22、r/project/python/tutotial/file/test.py, #and prefix is Giving /media/data/programmer/project/,#returnpathaspython/tutotial/file/test.pyreturn fullpathlen(prefix)+1:mainLogic()5 资 源 :方 法 详 解你 可 以 在 这 里 看 到 更 多 的 api解 释 ,感 谢 该 作 者 :http:/python.org/docs/200/p_119.htmlpostedon2009-04-0116:22Chenyunshi
23、阅 读 (604)评 论 (1) 编 辑 收 藏 引 用 所 属 分 类 :Python3评 论# re: Python 3 教 程 二 :文 件 ,目 录 和 路径 未 登 录 2009-05-17 23:27 allen很 好 , 学 习 , 希 望 楼 主 继 续 回 复 更 多 评 论刷 新 评 论 列 表标 题re: Python 3 请 输 入 标 题姓 名 请 输 入 你 的 姓 名主 页验 证 码 *内 容 (提 交 失 败 后 ,可 以 通 过 “ 恢 复 上 次 提 交 ” 恢 复 刚 刚 提 交 的 内 容 )请 输 入 评 论 内 容RememberMe?提 交 登 录
24、 使 用 高 级 评 论 新 用 户 注 册 返 回 页 首 恢 复 上 次 提 交使 用 Ctrl+Enter键 可 以 直 接 提 交 博 客 园 BlogJava 博 客 生 活 IT博 客 网 C+博 客 PHP博 客 博 客 园 社 区相 关 链 接 :Python源 码 剖 析 -深 度 探 索 动 态 语 言 核 心 技 术中 级 口 译 考 试 教 程 全 套 (含 mp3和 历 年 真 题 )高 级 口 译 考 试 教 程 全 套 (含 mp3和 历 年 真 题 )新 编 英 语 教 程 MP3一 起 学 习 日 语 3级 4级 文 法剑 桥 商 务 英 语 教 程 : 学
25、生 用 书 音 带 第 二 版 ( 磁 带 2盒 )08政 治 精 品 教 程相 关 文 章 : Python3 教 程 一 :入 门日 一 二 三 四 五 六29 30 31 1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 1 23 4 5 6 7 8 9导 航 IT博 客 首 页 新 随 笔 联 系 聚 合 管 理统 计 随 笔 -40 文 章 -0 评 论 -20 引 用 -0常 用 链 接 我 的 随 笔 我 的 评 论 我 参 与 的 随 笔留 言 簿(4) 给 我 留 言 查
26、看 公 开 留 言 查 看 私 人 留 言随 笔 分 类 C/C+(7)(rss) C+/Qt4(2)(rss) Db/Sql(1)(rss) Ext2(2)(rss) Java(1)(rss) JavaScript(2)(rss) Python2.x(4)(rss) Python3(4)(rss) Tools&plugins(1)(rss) Ubuntu/linux(6)(rss) Webdevelopment(6)(rss) YahooYUI(4)(rss) 社 会 杂 谈 (1)(rss)随 笔 档 案 2009年 8月 (2) 2009年 6月 (2) 2009年 4月 (4) 200
27、8年 11月 (4) 2008年 10月 (4) 2008年 9月 (6) 2008年 8月 (5) 2008年 7月 (2) 2008年 6月 (1) 2008年 5月 (7) 2008年 4月 (3)文 章 分 类 JavaScript(rss) Tools&plugins(rss)相 册 qt搜 索最 新 评 论 1.re: Python 3 教 程 一 :入 门 List all the importent keys,tanks -loversPython 2.re: Python 3 教 程 一 :入 门 It is simple and easy to understand. -a
28、hunter 3.re: Python 3 教 程 一 :入 门 thank you! -by 4.re: Python 3 教 程 一 :入 门 like it very much. Thx -imoc 5.re: Python 3 教 程 一 :入 门 Simple,but good!Thx. -小 张阅 读 排 行 榜 1. 实 例 教 程 :1小 时 学 会 Python(1263) 2.Ubuntu 8 安 装 &运 行 &配 置 经 验 贴 (1247) 3.Python 3 教 程 一 :入 门 (1190) 4. 实 战 YUI 的 patinator(datatable) 组 件 (927) 5.Python:文 件 操 作 技 巧 (File operation)(895)评 论 排 行 榜 1. 实 战 YUI 的 patinator(datatable) 组 件 (6) 2.Python 3 教 程 一 :入 门 (5) 3. 备 份 文 件 的 python脚 本 (3) 4.Javascript 杂 谈 一 : 全 局 作 用 域 和 闭 包 (2) 5.javascript杂 谈 二 : OO ? (1)Poweredby:IT博 客Copyright Chenyunshi