是python程序操作的核心_对《Python核心编程》中“第一个Python程序”的改进

概述:

本程序主要是模仿《Python核心编程》中3.6节——第一个Python程序,并在其基础上做了一些小的改进,而改进的要求则是来源于第三章的课后练习题。

本篇博客的一个核心问题就是在我们如何避免重复制造轮子。

课本源程序:

这里不对课本上的源程序作过多地讲解,因为课本本身就说得非常清楚而且易懂。

改进需求:

1. 可以创建新的文件;

2. 可以读取新的文件;

3. 可以让用户选择创建或是读取文件.

看到上面的需求,可以你的第一感觉就是,哦,这个太简单了。不就是把之前写过的代码在这里复制粘贴一下就好了啊,最多不过是多加一个if的判断,有什么难的?

当然我并不否认,这的确是一个简单的程序。不过从优良的代码质量来看,可不能是简单的复制和粘贴这么简单哦。因为复制代码到自己的程序中,这会导致代码的复用性大幅下降,对于小程序可能是没有什么影响,可是对于一些庞大的系统来说,这可能是一个致命的伤,因为维护起来可能会异常艰难。好了,说了这么多,那就来看看我是怎么解决这个需求的吧。

思路:

我把之前创建文件和读取文件的文件还是保留,然后在第三个文件makeNreadTextFile.py中使用代码去调用前两个文件中的方法。

代码分析:

makeNreadTextFile.py

#!/usr/bin/env python

'makeNreadTextFile.py -- create or read a text file'

import subprocess

# call makeTextFile.py

def call_make():

cmd = [ "python", "makeTextFile.py"]

result = subprocess.call(cmd, 0, None, None, None, None)

return result

# call readTextFile.py

def call_read():

cmd = [ "python", "readTextFile.py"]

result = subprocess.call(cmd, 0, None, None, None, None)

return result

# get the choose to read or make a text file

choose = raw_input('Enter the choose(r/m)')

if choose == 'm':

call_make()

elif choose == 'M':

call_make()

elif choose == 'r':

call_read()

elif choose == 'R':

call_read()

else:

print 'your choose is error!'

大家可以看到上面有几个地方比较特殊:

0818b9ca8b590ca3270a3433284dd417.png

1.import subprocess

你百度过后就会知道subprocess是开启一个新的线程,并与之通信。

2.result = subprocess.call(cmd, 0, None, None, None, None)

通过1就应该知道,这里就是正在通信。

当然,如果只是对书本上的代码做完整保留,可能达不到我们想要的效果。于是,需要做一些小小的修改。

makeTextFile.py

#!/usr/bin/env python

'makeTextFile.py -- create text file'

import os

ls = os.linesep

def make_text_file():

# get filename

while True:

fname = raw_input('Enter file name:')

if os.path.exists(fname):

print "ERROR: '%s' already exists" % fname

else:

break

# get file content (text) lines

all = []

print "\nEnter lines('.' by iteslf to quit).\n"

#loop until user terminates input

while True:

entry = raw_input('>')

if entry == '.':

break

else:

all.append(entry)

# write lines to file with proper line-ending

fobj = open(fname, 'w')

fobj.writelines(['%s%s' % (x, ls) for x in all])

fobj.close()

print 'DONE!'

if __name__ == "__main__":

make_text_file()

readTextFile.py

#!/usr/bin/env Python

'readTextFile.py -- read and display text file'

def read_text_file():

# get filename

fname = raw_input('Enter filename:')

# attemp to open file for reading

try:

fobj = open(fname, 'r')

except IOError, e:

print "*** file open error:", e

else:

# display contents to the screen

for eachLine in fobj:

print eachLine,

fobj.close()

if __name__ == "__main__":

read_text_file()

运行效果:

0818b9ca8b590ca3270a3433284dd417.png

注:这里是利用执行其他Python程序的方式来实现复用。不过,如果你已经学习了《Python核心编程》的第13章或是了解了Python中的class的话,你同样可以利用类的面向对象来解决问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值