肥宅钓鱼网
当前位置: 首页 钓鱼百科

python入门100个实例(Python入门经典实例三)

时间:2023-06-19 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

很简单,每个目录都放一个名为_init_.py的文件.该文件内容可以为空.这个层次结构如下所示:parent--__init_.py--child--__init_.py--a.py--b.py那么Python如何找到我们定义的module?

10 类和继承

class Base:

def __init__(self):

self.data = []

def add(self, x):

self.data.append(x)

def addtwice(self, x):

self.add(x)

self.add(x)

# Child extends Base

class Child(Base):

def plus(self,a,b):

return a b

oChild =Child()

oChild.add("str1")

print (oChild.data)

print (oChild.plus(2,3))

'''

知识点:

* self:类似Java的this参数

'''

11 包机制

每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子:

# a.py

def add_func(a,b):

return a b

# b.py

from a import add_func

# Also can be : import a

print ("Import add_func from module a")

print ("Result of 1 plus 2 is: ")

print (add_func(1,2))

# If using "import a" , then here should be "a.add_func"

module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个parent文件夹,该文件夹有一个child子文件夹.child中有一个module a.py . 如何让Python知道这个文件层次结构?很简单,每个目录都放一个名为_init_.py 的文件.该文件内容可以为空.这个层次结构如下所示:

parent

--__init_.py

--child

-- __init_.py

--a.py

--b.py

那么Python如何找到我们定义的module?在标准包sys中,path属性记录了Python的包路径.你可以将之打印出来:

import sys

print(sys.path)

通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.另一种方便的方法是编程中直接指定我们的module路径到sys.path 中:

import sys

import os

sys.path.append(os.getcwd() '\\parent\\child')

print(sys.path)

from a import add_func

print (sys.path)

print ("Import add_func from module a")

print ("Result of 1 plus 2 is: ")

print (add_func(1,2)

"'知识点:

· 如何定义模块和包

· 如何将模块路径添加到系统路径,以便python找到它们

· 如何得到当前路径

'''

12 内建帮助手册

对比C,Java的突出进步是内建Javadoc机制,程序员可以通过阅读Javadoc了解函数用法.Python也内建了一些方便函数以便程序员参考.

· dir函数: 查看某个类/对象的方法. 如果有某个方法想不起来,请敲dir. 在idle里,试试 dir(list)

· help函数: 详细的类/对象介绍. 在idle里, 试试 help(list)

1 遍历文件夹和文件

import os

import os.path

# os,os.path里包含大多数文件访问的函数,所以要先引入它们.

# 请按照你的实际情况修改这个路径

rootdir = " d:/download "

for parent, dirnames, filenames in os.walk(rootdir):

# case 1:

for dirname in dirnames:

print ( " parent is: "parent)

print ( " dirname is: "dirname)

# case 2

for filename in filenames:

print ( " parent is: "parent)

print ( " filename with full path : "os.path.join(parent, filename))


''' 知识点:

* os.walk返回一个三元组.其中dirnames是所有文件夹名字(不包含路径),filenames是所有文件的名字(不包含路径).parent表示父目录.

* case1 演示了如何遍历所有目录.

* case2 演示了如何遍历所有文件.

* os.path.join(dirname,filename) : 将形如"/a/b/c"和"d.java"变成/a/b/c/d.java".

'''

2 分割路径和文件名

import os.path

# 常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件的扩展名.

# 根据你机器的实际情况修改下面参数.

spath = " D:/download/repository.7z "

# case 1:

p,f = os.path.split(spath);

print ( " dir is: "p)

print ( " file is: "f)

# case 2:

drv,left = os.path.splitdrive(spath);

print ( " driver is: "drv)

print ( " left is: "left)

# case 3:

f,ext = os.path.splitext(spath);

print ( " f is: "f)

print ( " ext is: "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 shutil

import os

import os.path

src = " d:\\download\\test\\myfile1.txt "

dst = " d:\\download\\test\\myfile2.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( " line a\n " )

f1.write( " line b\n " )

f1.close()

shutil.copyfile(src, dst)

shutil.copyfile(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 Exception as err:

print (err)

'''

知识点:

* shutil.copyfile:如何复制文件

* os.path.exists:如何判断文件夹是否存在

* shutil.copytree:如何复制目录树

'''

总结:4个函数

· os.path.dirname(path)

· os.path.exists(path)

· shutil.copyfile(src, dst)

· shutil.copytree(srcDir, dstDir)

    推荐阅读
  • 农夫与蛇告诉我们什么道理(农夫与蛇说明了什么道理)

    我们应谨慎小心,但不要吝惜给好人的帮助。善良、勇敢、信任、无私、善良的人们往往不能被人所理解。对于蛇的本性而言。冬季无论是路边还是洞穴里面因为温度的下降它们只能选择冬眠来暂缓生存的一段时期。农夫本身也要负一半的责任!这个故事已经使很多人曲解了对于蛇的真正了解。其实就是,善意不是博爱,需要理解才是王道。假如农夫把蛇放入树洞里面的话,我想这个寓言又将有另一层意义了。

  • 天涯共此时但愿人长久(但愿人长久千里共同途)

    17年前,28岁的翁帆嫁给了82岁的杨振宁,从此,岁月静好。杨振宁焕发生命活力,如今,庆祝了自己的百岁期颐之寿。百岁庆生我们有理由相信,翁帆嫁给了爱情。这种好奇从他们结婚开始直到高调庆生再次出现。82与28唯一的解释只能是,他们彼此精神家园充盈,战胜一切人间俗情。他们将精神陪伴作为唯一有效的存在!作为名人的伴侣,翁帆不能出轨。所以,作为女人的翁帆,她28岁前曾经尝试过的美味佳肴,此后便与她无缘。

  • 外墙砖铺贴方法(外墙贴瓷砖的施工方法)

    我们一起去了解并探讨一下这个问题吧!外墙砖铺贴方法先检查外墙体是否空鼓、脱层、墙体的平整度、垂直度及阴阳角方正度是否达标。铺贴前,将外墙体浇水湿润,待表面无明水,再铺贴。根据设计要求在填缝完工后,既用工具勾,再用干净布将外表抹干净。清洗颐养:填缝完工后约30小时且砖缝凝固到一定强度后,用清水从上至下全面冲洗干净砖面。

  • 肩周炎放血疗法(肩周炎放血疗法图片)

    放血疗法要领1、穴位要找准(正常情况下穴位大约是指甲盖大小,也就是一平方厘米,定位不准的,请刺一平方寸大小。哪些肩周炎患者不能用放血疗法并不是所有的肩周炎患者都可以放血疗法治疗,一般来说孕妇,年老体弱,有出血倾向的肩周炎患者不要用放血疗法,另外,值得注意的是糖尿病患者也不能采取放血疗法。

  • 茅屋为秋风所破歌的主旨(茅屋为秋风所破歌的主旨是什么)

    《茅屋为秋风所破》主旨句是“安得广厦千万间,大庇天下寒士俱欢颜风雨不动安如山”诗中通过描写个人生活的不幸遭遇和思想上的痛苦,表达了诗人希望天下穷苦人都能过上安定生活的美好理想和希望,我来为大家讲解一下关于茅屋为秋风所破歌的主旨?茅屋为秋风所破歌的主旨《茅屋为秋风所破》主旨句是“安得广厦千万间,大庇天下寒士俱欢颜!风雨不动安如山。”何时眼前突兀见此屋,吾庐独破受冻死亦足!

  • 如何辨别一个女生是否单身(如何判断女生是否单身)

    如何判断女生是否单身  追女生最尴尬的事情莫过于,鼓起勇气去表明心意,却被对方告知已经有了男朋友所以懂得如何判断一个女生是否单身,是每个单身男士必须要学会技能那到底该如何判断女生是否单身呢?一、判断女生是否单身的方法  。

  • 坚持理论创新坚持独立自主(走好新的赶考之路)

    鸦片战争后,中国人民和中华民族处于被动挨打、任人宰割的悲惨境地。中国共产党一经成立就矢志探索民族独立的道路。坚持中国的事情必须由中国人民自己作主张,自己来处理。独立自主意味着自己的事情自己说了算,不依赖外部力量,不容许他国干涉。实践表明,中国的事情必须按照中国的特点、中国的实际来办,由中国人民自己作主,这是解决中国所有问题的正确之道。独立自主意味着对外交往要坚决维护国家主权独立。

  • 元旦发朋友圈的经典句子(元旦节日发圈的优秀句子)

    元旦发朋友圈的经典句子温馨提示:您的宝贝又陪伴了您一年,新的一年,如需续费请及时打款。元旦到来不送礼,声声祝福伴随你。2021重在参与,2022重在搞钱。元旦发朋友圈的说说新禧已到,向你问好。今天是年底,祝你年年岁岁都平安,一生幸福到底;明天是元旦,祝你财源滚滚来,烦恼统统都完蛋。元旦佳节到了,我把福来祝,好运天天交,生活步步高,期期中,打牌次次赢,口味顿顿好,若敢把我忘,小心挨棍棒!

  • 电视背景墙与沙发墙图案一样可以吗(电视背景墙与沙发墙图案一样可以的)

    跟着小编一起来看一看吧!但为了不显得过于花哨,建议即使是同样的图案,也可以有层次上的区别。电视背景墙图案多一些,沙发背景墙图案少一些。

  • 安徽有什么好玩的地方(安徽好玩的地方推荐)

    西递宏村西递宏村为世界文化遗产,是安徽南部民居中最具有代表性的两座古村落,以世外桃源般的田园风光、保存完好的村落形态、工艺精湛的徽派民居和丰富多彩的历史文化内涵而闻名天下,被誉为画中的村庄。黄山位于安徽省南部黄山市境内,有72峰,主峰莲花峰海拔1864米,与光明顶、天都峰并称三大黄山主峰,为36大峰之一。黄山是安徽旅游的标志,是中国十大风景名胜唯一的山岳风光。