zoukankan      html  css  js  c++  java
  • Python学习4Python的交互

    Python的交互

          在很多时候,你会想要让你的程序与用户(可能是你自己)交互。你会从用户那里得到输入,然后打印一些结果。我们可以分别使用raw_input和input语句来完成这些功能。对于输出,你也可以使用多种多样的str(字符串)类。例如,你能够使用rjust方法来得到一个按一定宽度右对齐的字符串。利用help(str)获得更多详情。

    另一个常用的输入/输出类型是处理文件。创建、读和写文件的能力是许多程序所必需的

    文件:

    你可以通过创建一个file类的对象来打开一个文件,分别使用file类的read、readline或write方法来恰当地读写文件。对文件的读写能力依赖于你在打开文件时指定的模式。最后,当你完成对文件的操作的时候,你调用close方法来告诉Python我们完成了对文件的使用。

    #!/usr/bin/python

    #Tue Jan 8 21:25:42 CST 2013

    poem='''\

    Programming is fun

    When the work is done

    If you wanna make your work also fun:

    use Python!

    '''

    f=file('poem.txt','w')

    f.write(poem)

    f.close()

    f=file('poem.txt')

    while True:

    line=f.readline()

    if len(line) == 0:

    break

    print line,

    f.close()

    打开文件的模式可为读(‘r’)、写(‘w’)或追加(‘a’)。

    write只能写入字符串。

    储存器

    Python提供了一个标准的模块,称为pickle。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整的取出来,这被称为持久地储存对象。

    还有一个模块cPickle,它的功能和pickle模块完全相同,但是用C语言写的所以比pickle快。

    #!/usr/bin/python

    #Wed Jan 9 17:40:54 CST 2013

    import cPickle  as p

    shoplistfile='shoplist.data'

    shoplist=['apple','egg','banana']

    f=file(shoplistfile,'w')

    p.dump(shoplist,f)

    f.close

    f=file(shoplistfile)

    storedlist=p.load(f)

    print storedlist

    使用import.. as语法。以便我们可以使用跟段的模块名称。

    Python也有异常的处理。用try..except进行异常处理。我们把通常的语句放在try块中,而把我们的错误处理语句放在except块中。

    我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。

    try..finally

    假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally块来完成。注意,在一个try块下,你可以同时使用except从句和finally块。如果你要同时使用它们的话,需要把一个嵌入另外一个。

    在程序中运行time.sleep(2)进行程序休息。需要加在time模块。

    Python标准库是随Python附带安装的,它包含大量机器有用的模块。

    sys模块

         sys模块包含系统对应的功能。    

         sys.version字符串给你提供安装的Python的版本信息。sys.version_info元组则提供。               

         一个对于有经验的程序员,sys模块中其他令人感兴趣的项目有sys.stdin、sys.stdout和sys.stderr它们分别对应你的程序的标准输入、标准输出和标准错误流。更简单的方法来使你的程序具备Python版本要求功能。

    读取文件:file()

                   f.readline()

    os模块

    这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤

    为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在

    Linux和Windows下运行。一个例子就是使用os.sep可以取代操作系统特定的路径分割符。

    下面列出了一些在os模块中比较有用的部分。它们中的大多数都简单明了。

    ● os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix

    用户,它是'posix'。

    ● os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。

    ● os.getenv()和os.putenv()函数分别用来读取和设置环境变量。

    ● os.listdir()返回指定目录下的所有文件和目录名。

    ● os.remove()函数用来删除一个文件。

    ● os.system()函数用来运行shell命令。

    ● os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使

    用'\n'而Mac使用'\r'。

    ● os.path.split()函数返回一个路径的目录名和文件名。

    >>> os.path.split('/home/swaroop/byte/code/poem.txt')

    ('/home/swaroop/byte/code', 'poem.txt')

    ● os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.exists()函数用来检验给出的路径是否真地存在。

    更多的Python的内容

    在Python中的特殊的方法具有特殊的含义,比如__init__和__del__方法。

    一般说来,特殊的方法都被用来模仿某个行为。例如,如果你想要为你的类使用x[key]这样的索引操作(就像列表和元组一样),那么你只需要实现__getitem__()方法就可以了。想一下,Python就是对list类这样做的!

    下面这个表中列出了一些有用的特殊方法。如果你想要知道所有的特殊方法,你可以在《Python参考手册》中找到一个庞大的列表。

    表15.1 一些特殊的方法

    名称说明

    __init__(self,...)      这个方法在新建对象恰好要被返回使用之前被调用。

    __del__(self)      恰好在对象要被删除之前调用。

    __str__(self)      在我们对对象使用print语句或是使用str()的时候调用。

    __lt__(self,other)     当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。

    __getitem__(self,key)     使用x[key]索引操作符的时候调用。

    __len__(self)      对序列对象使用内建的len()函数的时候调用。

    在函数中接收元组和列表

    当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。

    >>> def powersum(power, *args):

    ... '''Return the sum of each argument raised to specified power.'''

    ... total = 0

    ... for i in args:

    ... total += pow(i, power)

    ... return total

    ...

    >>> powersum(2, 3, 4)

    25

    >>> powersum(2, 10)

    100

    lambda形式

    lambda语句被用来创建新的函数对象,并且在运行时返回他们。

    exec和eval语句

    exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。下面是一个简单的例子。

    >>> exec 'print "Hello World"'

    Hello World

    eval语句用来计算存储在字符串中的有效Python表达式。下面是一个简单的例子。

    >>> eval('2*3')

    6

    assert语句

    assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError。

    >>> mylist = ['item']

    >>> assert len(mylist) >= 1

    >>> mylist.pop()

    'item'

    >>> assert len(mylist) >= 1

    Traceback (most recent call last):

    File "<stdin>", line 1, in ?

    AssertionError

  • 相关阅读:
    DAY 179 在Flask中使用MongoDB:Flask-MongoEngine
    DAY 178 oracle基础
    DAY 177 mongoengine
    DAY 176 redis教程
    存储器
    cpu
    java 类文件类型
    线程池
    CopyOnWrite容器
    ConcurrentHashMap
  • 原文地址:https://www.cnblogs.com/linuxer/p/2889961.html
Copyright © 2011-2022 走看看