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

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)

    推荐阅读
  • 阳极白色氧化铝板(橙果智库苹果店御用)

    苹果旗下的产品总是吸引着全球人类的目光,从昙花一现的iphone5开始,苹果就放弃了玻璃外壳,随后阳极氧化铝成为其御用材质。缺点这种材料成为苹果“御用”,但被其他品牌劝退的原因主要有两点:价格昂贵本身阳极氧化的工艺很贵,就目前来说,国内阳极氧化铝板的工艺还不成熟,工艺稳定性上还有待提高。

  • 肉丁包子馅的做法(香菇肉丁包子馅的做法)

    9、包上馅心,收口处捏成细皱折,放入蒸锅的笼屉里。

  • 立春那天为什么要吃萝卜(立春吃萝卜的由来)

    吃萝卜不仅可以解春困,还可以增强妇女的生育机能,立春萝卜又称为“子孙萝卜”。所以,根据以上特点,应多吃一些辛甘发散性质的食物,而少食具有酸收作用的食物。这其中,萝卜正是立春时节最佳的保健食物。萝卜中还有的维生素C可以帮助消除体内的废物,促进身体的新陈代谢。尤其是白萝卜或者水萝卜,其富含的酶可以起到促进消化的作用。

  • 不发消息怎么看出被删(微信如何不发信息知道自己是否被删除)

    跟着小编一起来看一看吧!不发消息怎么看出被删正常情况,他没删你,朋友圈也没屏蔽你的话,能看到朋友圈照片,点击右上角的三个点,会显示很多选项譬如标星好友、备注名、删除、发名片、添加到桌面等等。

  • 致拼搏路上的自己励志句子(做好自己的励志句子正能量)

    无知识的人,其生命如同无叶子的树,缺少勃勃生机。成功是一种观念,致富是一种义务,快乐是一种权力。我们这个世界,从不会给一个伤心的落伍者颁发奖牌。平时没有跑过千米,比赛时就难以进行一百米的冲刺。没有激流就称不上进,没有山峰则谈不上攀登。山路曲折盘旋,但毕竟朝着顶峰延伸。让生活的句号圈住的人,是无法前时半步的。聪明人能洞察事物未来的发展趋势。他们在发洪水之前养鸭,而不是养鸡。

  • QQ邮箱为什么收不了验证码 为什么qq收不到邮箱验证码

    QQ邮箱收不到验证码的原因:1、邮箱内存已满,垃圾过多;2、QQ邮箱的设置有问题,可能把验证地址默认为黑名单;3、采用了"发件人包含passport@baidu.com,则删除邮件"的收信规则。

  • 英语倒装句正确方法(英语倒装句几种常见结构和用法解析)

    Theregoesthebell.Thencamethechairman.Hereisyourletter.2)表示运动方向的副词或地点状语置于句首,谓语表示运动的动词。在下列情形中出现部分倒装。没有助动词或情态动词,则需添加助动词do,does或did,并将其置于主语之前。that句型中的so位于句首时,需倒装。

  • 苹果4用的什么数据线(一根数据线可以买一款千元机)

    最近,苹果官方上架了一款霹雳4Pro连接线,线长1.8米,3米长的为1169元,价格却大大超乎了消费者的想象。虽说目前,这样的线材确实价格不菲,但从各大电商平台可以看出,这样的产品价格也就200元左右,即使是知名的配件厂商,价格最贵也就400左右,而苹果的价格是这些线材的好几倍,显然,这样的价格肯定也会遭到很多网友的吐槽。

  • 梦比优斯奥特曼剧情(讲述的是什么故事)

    《奥特曼》特摄系列40周年的纪念作,M78星云的一名新英雄屹立在地球上了。梦比优斯这个名字源自19世纪德国著名数学家、天文学家莫比乌斯,梦比优斯奥特曼的标志图形就是一个梦比优斯环。《梦比优斯·奥特曼》作为奥特曼系列诞生40周年纪念作,计划在片中让奥特兄弟陆续客串登场!宇宙警备队大队长派遣新战士梦比优斯参与地球防卫,与地球上的青年人一起同怪兽和外星人作战!该片描绘了被历代奥特曼保卫着的新战士的成长故事。

  • 美字在五行中属什么(美字读音及解释)

    以下内容大家不妨参考一二希望能帮到您!美字在五行中属什么美字的五行为水。美是汉语常用字,初文见于商代甲骨文。美的古字形像戴着头饰站立的人,本义指漂亮、好看。“美”除了表示具体事物的美好外,还用来表示抽象意义。如形容一个人品德高尚称为“美德”。美好的事物往往给人愉快的感觉,所以“美”有令人满意的意思,“美”有时也作动词使用,指赞美;又指使其漂亮。