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

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)

    推荐阅读
  • 有时一直心慌是怎么回事(问题可能很严重)

    问题可能很严重似乎做了“亏心事”总是心慌,气短、乏力、头晕、多汗……这些症状,你是否有过呢?什么是房颤?房颤被称为21世纪的心血管流行病,然而大众认知程度远远不及高血压及冠心病暨南大学附属第一医院副院长、心血管专家。

  • win10系统许可证即将过期(win10系统许可证即将过期的解决方法)

    打开电脑突然提示“windows许可证即将过期”,可是查看系统中显示是已激活状态,还没到期,但每次打开电脑都会提示很是麻烦。输入新的密钥下一步激活即可。

  • 机票取消座位保留机票怎么用(机票取消座位保留机票的作用)

    以下内容希望对你有帮助!机票取消座位保留机票怎么用机票取消座位,保留机票可以要求预留座位,保留座位,取消选座,延期一年或者半年使用。但是能否免费保留座位要询问航空公司或者平台,各航班情况都不大一样。如何进行机票保留:查看自己所购买的平台,根据所买渠道联系对应的渠道方做客票保留。

  • 浑身解数造句 浑身解数怎么写

    浑身解数近义词绞尽脑汁、竭尽全力浑身解数反义词信手拈来、吹灰之力、敷衍了事

  • 所得税退税网上如何操作(申请所得税退税流程)

    纳税人在纳税年度内预缴税款超过应纳税款的,主管税务机关应及时按有关规定办理退税,或者经纳税人同意后抵缴其下一年度应缴企业所得税税款。因此,纳税人经年度申报后确认多缴的税款,可及时向主管税务机关申请退税。税收宣传咨询窗口对纳税人提交的文书、证件资料进行核对,核对无误的予以受理。

  • 你梦到的人对你思念至极(你梦到了一个人)

    许久已不见,怕是彼此早已改变了旧模样。不经意的一个晚上,竟然相遇于梦中。从何时起,竟会相信这样的说法是正确的。弗洛伊德在《梦的解析》一书中提到,人在清醒状态的特征是思维活动以概念而非图景展开,梦则偏重以视觉表象来思考,并常常向个体披露其不愿承认之事。完成梦的解释后,弗洛伊德发现梦其实是一种遂愿,也就是压抑在做梦者潜意识里的现实的愿望,通过伪装与变形,在梦中得到了实现或表达。

  • 一个人静静看夜空图片(适合一个人静静度过)

    ——郁达夫《春风沉醉的晚上》不知不觉间,都快九月了。原本两人就是这样毫无交集,可有天,女工回到住处时给主人公带了香蕉。这香蕉也成了两人交集的纽带,而且每天还会聊聊天。但其实,我私以为文中主人公的“散步”,也不过是一种美好的说辞罢了,现实中并没那么美。他每次散步也只是凌晨漫无目地走在街上而已。

  • 巅峰战舰哪个指挥官忽视战魂 巅峰战舰航母指挥官选择

    游戏中游戏中支持10V10真人实时对战,同样还有5V5对战,天梯模式,舰队战役,组队战,无尽模式,房间模式等,在随机地图中互相战斗,完成目标并取得胜利。

  • 两弹一星元勋郭永怀故居对外开放 两弹一星元勋郭永怀故居对外开放 新华社

    由于这两天两弹一星元勋郭永怀故居对外开放在网上的关注热度是相当之高的,很多小伙伴或许也都在关注两弹一星元勋郭永怀故居对外开放,那么这当中当然还是有部分的小伙伴们并不太了解两弹一星元勋郭永怀故居对外开放,那么没有关系,如果说大家现在想要了解两弹一星元勋郭永怀故居对外开放,大家可以点击下方的点击(前往)进行了解哦。

  • steam动作冒险推荐(范海辛的奇妙冒险Steam特惠)

    原价194元的《范海辛的奇妙冒险》合集包现打一折优惠仅售19元,超值史低不容错过。合集包括《范海辛的奇妙冒险》三部曲,全DLC,此外还包括了一款游戏塔防ARPG元素的游戏《Deathtrap》。《范海辛的奇妙冒险》三部曲单独也有折扣,均是史低价,仅售4元。另外,拥有《范海辛的奇妙冒险》三部曲可以免费领取兑换最终剪辑版。