daidingdaiding——python新手教程笔记(三)

Source
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41185868/article/details/86586691

daidingdaiding——python新手教程笔记(三)

 


Lesson 10 Python的文件操作
文件操作....是一个语言和外界联系的主要方法....现在以txt为例简单的讲一下...



首先是建立关联...假设在存在以下文件 c:\a.txt

  代码:

This is line #1
This is line #2
This is line #3
END

 

 

  代码:

>>> xxx = file('c:\\a.txt', 'r')

 


关键字的第一部分,是文件路径及名称。注意这里面,路径需要用\\
第二部分,是对文件的模式或者叫权限,一般有以下3种 "r" (read), "w" (write)和 "a"(append).



之后,就可以利用
xxx_content = infile.read()
xxx_content = infile.readlines()
来读取文件内容了

  代码:

>>> xxx = file('c:\\a.txt', 'r')
>>> xxx_content = xxx.read()
>>> print xxx_content
This is line #1
This is line #2
This is line #3
END
>>> xxx.close()
>>>



>>> infile = file('c:\\a.txt', 'r')
>>> xxx = file('c:\\a.txt', 'r')
>>> for xxx_line in xxx.readlines():
        print 'Line:', xxx_line

       
Line: This is line #1

Line: This is line #2

Line: This is line #3

Line: END
>>> xxx.close()
>>>

 


然后是文件的写入

  代码:

>>> xxx=file('c:\\test.txt','w')
>>> xxx.write('billrice')
>>> xxx.write('testtest')
>>> xxx.write('enter\n')
>>> xxx.writelines(['billrice','ricerice'])
>>> xxx.close()
>>>
>>> xxx=file('c:\\test.txt','r')
>>> content=xxx.read()
>>> print content
billricetesttestenter
billricericerice
>>>

 


需要注意的是...在xxx.close()之前,c盘下面只有一个空空的test.txt,xxx.close()的作用相当于最后的存盘。

Lesson 11 走向模块化的第二步
函数上面还能是什么呢?内嵌函数^_^,其实python是支持的。不过用起来会让你吐血的,LGB名称查找规则。。。(寒)。python是面向对象的,对于面向对象的支持挺好玩的。

  代码:

class person:
    def __init__(self):
        self.name = 'taowen'
        self.id = 20022479
    def say_id(self):
        print "%s's id is %d" % (self.name, self.id)


me = person()
me.say_id()

 


比较复杂了吧。如果不熟悉面向对象的概念的,可能会觉得晕。我来解释一下。所谓面向对象是把数据和操作数据的函数放到同一个类中去,然后用类来创建对象,操作的时候能够比较方便(很不精确的说法,任何一个OO高手都可以把我骂得屁都不是)。


类是class关键来定义的。class person:就是说定义一个类,名字叫person。

对象
对象是用类来产生的。所以me就是对象,产生的办法就是像调用函数一样,person(),而且()中是能够放参数的,什么时候要参数,看下面的“初始化函数“

初始化函数
类可以有自己的初始化函数,每次类被创建的时候(调用person()这样的语句的时候),都会调用它。这个在C++中的名称是构造函数。__init__是必须的名字,你不能用其他名字来当初始化函数。但是你可以没有初始化函数。

类的数据
类的数据是所有类产生的对象共享的数据。这里没有用到类的数据,要写的话是这样:

  代码:

class person:
    school = 'bit'
    def __init__(self):
        self.name = 'taowen'
        self.id = 20022479
    def say_id(self):
        print "%s's id is %d" % (self.name, self.id)


me = person()
me.say_id()
print me.school

 


对象的数据
对象的数据是用
self.变量名 = 。。。
来生成的。这里self.name就是对象的数据。对象的数据和类的数据不同,因为对象之间的数据是互不共享的,而类的数据是被所有由类生成的对象共享的。

对象的函数(类的函数)
两个没有区别,是类的就是对象的。其实就是类的(我说的是底层实现,不过不用管,如果关心怎么实现的,等我写Hacking OO吧,还没影呢)。say_id就是对象的函数,你能够调用它。每个对象的函数都需要一个self参数,表示[color]这个对象[/color]。

为什么使用面向对象编程
除去让人觉得你比较专业外,当然由切实的好处。比较浅显的是你能够表达一定的层次关系,类与类之间能够有包含和继承的关系(当然你现在还不会。。。)。而且对象能够把数据和操作数据的函数放在一起,能够比较清晰。虽然有所谓的数据隐藏的概念,但是在python中其实就是一个不要直接调用对象中的数据的约定,而要用一个函数作为中转。其实不懂面向对象很正常,其实有的时候就是要在用的中间感悟的。什么时候把用函数编程用牛了,用出个道道来了,说不定你已经感觉到了什么是面向对象编程。另外:所谓什么OO,都是一些认为规定,不用语法支持,只要心中有这个想法(什么想法?自己悟啊),就能够写出OO的代码,不管你用的是什么语言,什么语法。

Lesson 12 python to exe
about py2exe

本文讲述如何将一个python源代码编译成一个exe.....我会的只是最初步最基本的.....实际上那个py2exe似乎有着更强大的功能

1:下载安装py2exe.....from http://twh@bitunion.org


2:假设你写好了一个python程序....guess_number.py.......存在了c:\Python23\下面

3:再写一个setup.py....也存在c:\Python23\下面......内容如下

  代码:

# setup.py
from distutils.core import setup
import py2exe

setup(name="guess_number",
      scripts=["guess_number.py"],
)

 


其中name和scripts是需要你到时候具体修改的....

4:找到windows的dos模式(命令提示符).....或者自己做个快捷方式也可以....
C:\Python23>
C:\Python23>python setup.py py2exe
构造就开始了....
几秒钟以后....
在你的C:\Python23就会出现两个文件夹build和dist,前面那个里面似乎是源程序(这个我不太清楚)....dist里面的就是编译好的.exe了.....ok....


btw....等国两天有了实际应用再来翻译这些东西

Specifying additional files
Some applications need additional files at runtime, this maybe configuration files, fonts, bitmaps, whatever.

py2exe can copy these files into subdirectories of dist\myscript if they are specified in the setup script with the data_files option. data_files should contain a sequence of (target-dir, files) tuples, where files is a sequence of files to be copied.

Here's an example:

  代码:

# setup.py
from distutils.core import setup
import glob
import py2exe

setup(name="myscript",
      scripts=["myscript.py"],
      data_files=[("bitmaps",
                   ["bm/large.gif", "bm/small.gif"]),
                  ("fonts",
                   glob.glob("fonts\\*.fnt"))],
)

 


This would create a subdirectory bitmaps in dist\myscript, containing the two bitmaps, and a subdirectory fonts, containing all the *.fnt files.



相关资料出处....
http://starship.python.net/crew/theller/py2exe/