• python基础知识三


    博客参考老师文章:http://www.cnblogs.com/wupeiqi/
    博客参考老师文章:http://www.cnblogs.com/luotianshuai/p/4949497.html

    上节回顾:

    str:字符串
    strs = "rain,sunny,ray,wind"
    list:列表
    lists = ['rain','sunny','ray','wind']
    tuple:元组
    tuples = ('rain','sunny','ray','wind')
    dict:字典
    dicts = {'name':'rain','age':21}

     

    今日知识:

    一、set集合

    set集合:是一个无序且不重复的元素集合

      1 class set(object):
      2     """
      3     set() -> new empty set object
      4     set(iterable) -> new set object
      5     
      6     Build an unordered collection of unique elements.
      7     """
      8     def add(self, *args, **kwargs): # real signature unknown
      9         """ 添加 """
     10         """
     11         Add an element to a set.
     12         
     13         This has no effect if the element is already present.
     14         """
     15         pass
     16 
     17     def clear(self, *args, **kwargs): # real signature unknown
     18         """ Remove all elements from this set. """
     19         pass
     20 
     21     def copy(self, *args, **kwargs): # real signature unknown
     22         """ Return a shallow copy of a set. """
     23         pass
     24 
     25     def difference(self, *args, **kwargs): # real signature unknown
     26         """
     27         Return the difference of two or more sets as a new set.
     28         
     29         (i.e. all elements that are in this set but not the others.)
     30         """
     31         pass
     32 
     33     def difference_update(self, *args, **kwargs): # real signature unknown
     34         """ 删除当前set中的所有包含在 new set 里的元素 """
     35         """ Remove all elements of another set from this set. """
     36         pass
     37 
     38     def discard(self, *args, **kwargs): # real signature unknown
     39         """ 移除元素 """
     40         """
     41         Remove an element from a set if it is a member.
     42         
     43         If the element is not a member, do nothing.
     44         """
     45         pass
     46 
     47     def intersection(self, *args, **kwargs): # real signature unknown
     48         """ 取交集,新创建一个set """
     49         """
     50         Return the intersection of two or more sets as a new set.
     51         
     52         (i.e. elements that are common to all of the sets.)
     53         """
     54         pass
     55 
     56     def intersection_update(self, *args, **kwargs): # real signature unknown
     57         """ 取交集,修改原来set """
     58         """ Update a set with the intersection of itself and another. """
     59         pass
     60 
     61     def isdisjoint(self, *args, **kwargs): # real signature unknown
     62         """ 如果没有交集,返回true  """
     63         """ Return True if two sets have a null intersection. """
     64         pass
     65 
     66     def issubset(self, *args, **kwargs): # real signature unknown
     67         """ 是否是子集 """
     68         """ Report whether another set contains this set. """
     69         pass
     70 
     71     def issuperset(self, *args, **kwargs): # real signature unknown
     72         """ 是否是父集 """
     73         """ Report whether this set contains another set. """
     74         pass
     75 
     76     def pop(self, *args, **kwargs): # real signature unknown
     77         """ 移除 """
     78         """
     79         Remove and return an arbitrary set element.
     80         Raises KeyError if the set is empty.
     81         """
     82         pass
     83 
     84     def remove(self, *args, **kwargs): # real signature unknown
     85         """ 移除 """
     86         """
     87         Remove an element from a set; it must be a member.
     88         
     89         If the element is not a member, raise a KeyError.
     90         """
     91         pass
     92 
     93     def symmetric_difference(self, *args, **kwargs): # real signature unknown
     94         """ 差集,创建新对象"""
     95         """
     96         Return the symmetric difference of two sets as a new set.
     97         
     98         (i.e. all elements that are in exactly one of the sets.)
     99         """
    100         pass
    101 
    102     def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
    103         """ 差集,改变原来 """
    104         """ Update a set with the symmetric difference of itself and another. """
    105         pass
    106 
    107     def union(self, *args, **kwargs): # real signature unknown
    108         """ 并集 """
    109         """
    110         Return the union of sets as a new set.
    111         
    112         (i.e. all elements that are in either set.)
    113         """
    114         pass
    115 
    116     def update(self, *args, **kwargs): # real signature unknown
    117         """ 更新 """
    118         """ Update a set with the union of itself and others. """
    119         pass
    120 
    121     def __and__(self, y): # real signature unknown; restored from __doc__
    122         """ x.__and__(y) <==> x&y """
    123         pass
    124 
    125     def __cmp__(self, y): # real signature unknown; restored from __doc__
    126         """ x.__cmp__(y) <==> cmp(x,y) """
    127         pass
    128 
    129     def __contains__(self, y): # real signature unknown; restored from __doc__
    130         """ x.__contains__(y) <==> y in x. """
    131         pass
    132 
    133     def __eq__(self, y): # real signature unknown; restored from __doc__
    134         """ x.__eq__(y) <==> x==y """
    135         pass
    136 
    137     def __getattribute__(self, name): # real signature unknown; restored from __doc__
    138         """ x.__getattribute__('name') <==> x.name """
    139         pass
    140 
    141     def __ge__(self, y): # real signature unknown; restored from __doc__
    142         """ x.__ge__(y) <==> x>=y """
    143         pass
    144 
    145     def __gt__(self, y): # real signature unknown; restored from __doc__
    146         """ x.__gt__(y) <==> x>y """
    147         pass
    148 
    149     def __iand__(self, y): # real signature unknown; restored from __doc__
    150         """ x.__iand__(y) <==> x&=y """
    151         pass
    152 
    153     def __init__(self, seq=()): # known special case of set.__init__
    154         """
    155         set() -> new empty set object
    156         set(iterable) -> new set object
    157         
    158         Build an unordered collection of unique elements.
    159         # (copied from class doc)
    160         """
    161         pass
    162 
    163     def __ior__(self, y): # real signature unknown; restored from __doc__
    164         """ x.__ior__(y) <==> x|=y """
    165         pass
    166 
    167     def __isub__(self, y): # real signature unknown; restored from __doc__
    168         """ x.__isub__(y) <==> x-=y """
    169         pass
    170 
    171     def __iter__(self): # real signature unknown; restored from __doc__
    172         """ x.__iter__() <==> iter(x) """
    173         pass
    174 
    175     def __ixor__(self, y): # real signature unknown; restored from __doc__
    176         """ x.__ixor__(y) <==> x^=y """
    177         pass
    178 
    179     def __len__(self): # real signature unknown; restored from __doc__
    180         """ x.__len__() <==> len(x) """
    181         pass
    182 
    183     def __le__(self, y): # real signature unknown; restored from __doc__
    184         """ x.__le__(y) <==> x<=y """
    185         pass
    186 
    187     def __lt__(self, y): # real signature unknown; restored from __doc__
    188         """ x.__lt__(y) <==> x<y """
    189         pass
    190 
    191     @staticmethod # known case of __new__
    192     def __new__(S, *more): # real signature unknown; restored from __doc__
    193         """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
    194         pass
    195 
    196     def __ne__(self, y): # real signature unknown; restored from __doc__
    197         """ x.__ne__(y) <==> x!=y """
    198         pass
    199 
    200     def __or__(self, y): # real signature unknown; restored from __doc__
    201         """ x.__or__(y) <==> x|y """
    202         pass
    203 
    204     def __rand__(self, y): # real signature unknown; restored from __doc__
    205         """ x.__rand__(y) <==> y&x """
    206         pass
    207 
    208     def __reduce__(self, *args, **kwargs): # real signature unknown
    209         """ Return state information for pickling. """
    210         pass
    211 
    212     def __repr__(self): # real signature unknown; restored from __doc__
    213         """ x.__repr__() <==> repr(x) """
    214         pass
    215 
    216     def __ror__(self, y): # real signature unknown; restored from __doc__
    217         """ x.__ror__(y) <==> y|x """
    218         pass
    219 
    220     def __rsub__(self, y): # real signature unknown; restored from __doc__
    221         """ x.__rsub__(y) <==> y-x """
    222         pass
    223 
    224     def __rxor__(self, y): # real signature unknown; restored from __doc__
    225         """ x.__rxor__(y) <==> y^x """
    226         pass
    227 
    228     def __sizeof__(self): # real signature unknown; restored from __doc__
    229         """ S.__sizeof__() -> size of S in memory, in bytes """
    230         pass
    231 
    232     def __sub__(self, y): # real signature unknown; restored from __doc__
    233         """ x.__sub__(y) <==> x-y """
    234         pass
    235 
    236     def __xor__(self, y): # real signature unknown; restored from __doc__
    237         """ x.__xor__(y) <==> x^y """
    238         pass
    239 
    240     __hash__ = None
    241 
    242 set
    set

    1.1 创建set集合

    s = set()
    set1 = set(['rain','sunny','ray','wind'])
    print(set1)      #{'wind', 'ray', 'sunny', 'rain'}

    1)创建一个空集合

    s = set()
    set1 = set(['rain','sunny','ray','wind'])
    print(set1)      #{'wind', 'ray', 'sunny', 'rain'} 

    2)将一个list转换成set(其它类型相同方法)

    lists = ['rain','sunny','ray','wind']
    set1 = set(lists)
    print(set1)      #{'ray', 'wind', 'rain', 'sunny'}

    1.2 set常用的集合方法

    1)add 增加一个元素

    s = set()
    s.add('rain')
    print (s)            # {'rain'}

    2)clear 清除所有的元素

    s.clear()
    print(s)            # set()

    3)difference 判断元素不相同的

    set1 = { 'rain', 'ray', 'wind'}
    set2 = {'sunny', 'rain', 'wind'}
    
    #判断元素不相同的(不改变原数据,新建一个集合保存差异数据set3)
    set3 = set1.difference(set2)
    #set1中存在,set2中不存在的打印
    print(set3)         #  {'ray'}
    
    set3 = set2.difference(set1)
    print(set3)         #  {'sunny'}

    4)symmetric_difference 差集

    set1 = { 'rain', 'ray', 'wind'}
    set2 = {'sunny', 'rain', 'wind'}
    
    #对称差集(不改变原数据,新建一个集合保存差异数据set3)
    set3 = set1.symmetric_difference(set2)
    print(set3)             #{'ray', 'sunny'} 

    5)difference_update  差集取数据 ,更新数据

    set1 = { 'rain', 'ray', 'wind'}
    set2 = {'sunny', 'rain', 'wind'}
    
    #更新set1数据(改变原数据)
    set1.difference_update(set2)
    #先做difference比较,然后拿到比较后的结果,更新到set1
    print(set1)

    6)sysmmetric_difference_update

    set1 = { 'rain', 'ray', 'wind'}
    set2 = {'sunny', 'rain', 'wind'}
    #更新set1数据(改变原数据)
    set1.symmetric_difference_update(set2)
    #先做symmetric_difference比较,然后拿到比较后的结果,更新到set1
    print(set1) #{'sunny', 'ray'}

    7)discard

    set1 = {11,22,33,44}
    #移除不存在的元素时,不会报错
    set1.discard(1111)
    print(set1)    #{33, 11, 44, 22}

    8)remove

    set1 = {11,22,33,44}
    #移除不存在的元素时,会报错

    9)pop

    set1 = {11,22,33,44}
    #移除set1中随机元素,并返回移除的值(可接收)
    set1.pop()
    print(set1)   #{11, 44, 22}

    10)intersection

    set1 = { 'rain', 'ray', 'wind'}
    set2 = {'sunny', 'rain', 'wind'}
    
    #set1与set2的交集
    set3 = set1.intersection(set2)
    print(set3)   # {'rain', 'wind'}

    10)intersection_updat

    set1 = { 'rain', 'ray', 'wind'}
    set2 = {'sunny', 'rain', 'wind'}
    #set1与set2的交集,并且直接更新到set1
    set1.intersection_update(set2)
    print(set1)   # {'rain', 'wind'}

    11)isdisjoint

    set1 = { 'rain', 'ray', 'wind'}
    set2 = {'sunny', 'rain', 'wind'}
    # 如果没有交集,返回True,否则返回False
    print(set1.isdisjoint(set2))   # False
    
    set1 = {11,22,33,}
    set2 = {44,55,66,}
    # 如果没有交集,返回True,否则返回False
    print(set1.isdisjoint(set2))   #True

    12)issubset

    set1 = {11,22,33,}
    set2 = {22,33,}
    #判断是否为子序列
    print(set2.issubset(set1))      #True
    
    print(set1.issubset(set2))      # False

    13)issuperset

    set1 = {11,22,33,}
    set2 = {22,33,}
    #判断是否为父序列
    print(set1.issuperset(set2))     #True

    14)union 并集

    set1 = {11,22,33,}
    set2 = {22,33,}
    #set1与set2的并集
    set3 = set1.union(set2)
    print(set3)                     #{33, 11, 22}

    15)update 批量更新、添加元素

    set1 = {11,22,33,}
    # set1.update("接收一个可以迭代的数据")
    set1.update('rain')
    print(set1)         #{33, 'i', 'r', 11, 'n', 22, 'a'}    
     1 练习:寻找差异
     2 old_dict = {
     3     "#1":8,
     4     "#2":4,
     5     "#4":2,}
     6 
     7 new_dict = {
     8     "#1":4,
     9     "#2":4,
    10     "#3":2,}
    11 需要删除:?
    12 需要新建:?
    13 需要更新:?
    14 打印出更新后的old_dict
     1 old_set = set(old_dict.items())
     2 new_set = set(new_dict.items())
     3 removes = old_set.difference(new_set)
     4 # print(removes)
     5 for a in removes:
     6     if a in old_set:
     7         old_set.remove(a)
     8 # print(old_set)
     9 adds = new_set.difference(old_set)
    10 # print(adds)
    11 for i in adds:
    12     old_set.add(i)
    13 old_dicts = dict(old_set)
    14 
    15 print(old_dicts)
    16 执行结果:
    17 {'#1': 4, '#2': 4, '#3': 2}
    example

     二、函数

    面向过程:
      程序按顺序执行,代码一层一层堆迭
     函数式:
      将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
    面向对象:
      对函数进行分类和封装,让开发“更快更好更强
      

    开始函数之旅

    1、先对比一段代码

    面向过程的一段代码:

    while True:
        if cpu利用率 > 90%:
            #发送邮件提醒
            连接邮箱服务器
            发送邮件
            关闭连接
      
        if 硬盘使用空间 > 90%:
            #发送邮件提醒
            连接邮箱服务器
            发送邮件
            关闭连接
      
        if 内存占用 > 80%:
            #发送邮件提醒
            连接邮箱服务器
            发送邮件
            关闭连接

    面向对象的一段代码:

    def 发送邮件(内容)
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
      
    while True:  
        if cpu利用率 > 90%:
            发送邮件('CPU报警')  
        if 硬盘使用空间 > 90%:
            发送邮件('硬盘报警')  
        if 内存占用 > 80%:
        发送邮件('内存报警') 

     第二段代码利用函数将某功能代码封装到函数中,在日后便无需重复编写,仅调用函数即可

     2、函数式编程

     函数式编程最重要的是增强代码的重用性和可读性

    ###### 定义函数 ######

    def
    函数名(参数): ... 函数体 ... 返回值

    # 只有定义时,函数体不执行
    # 被调用时才会执行

     函数的定义主要有如下要点:

    • def:表示函数的关键字
    • 函数名:函数的名称,日后根据函数名调用函数
    • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
    • 参数:为函数体提供数据
    • 返回值:当函数执行完毕后,可以给调用者返回数据。

    1) 返回值

    函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

    def 发送短信():
         
        发送短信的代码...
     
        if 发送成功:
            return True
        else:
            return False
     
     
    while True:
         
        # 每次执行发送短信函数,都会将返回值自动赋值给result
        # 之后,可以根据result来写日志,或重发等操作
     
        result = 发送短信()
        if result == False:
            记录日志,短信发送失

    2) 参数

    论使用函数参数的重要性!!!

    def CPU报警邮件()
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
    
    def 硬盘报警邮件()
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
    
    def 内存报警邮件()
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
     
    while True:
     
        if cpu利用率 > 90%:
            CPU报警邮件()
     
        if 硬盘使用空间 > 90%:
            硬盘报警邮件()
     
        if 内存占用 > 80%:
            内存报警邮件()
    不带参数的代码块
    def 发送邮件(内容)
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
      
    while True:
      
        if cpu利用率 > 90%:
            发送邮件('CPU报警')
      
        if 硬盘使用空间 > 90%:
            发送邮件('硬盘报警')
      
        if 内存占用 > 80%:
    带参数的代码块

    3)函数的有三中不同的参数:

    1. 普通参数
    2. 默认参数
    3. 动态参数

    普通参数:(严格按照顺序,将实际参数赋值给形式参数)

    # ######### 定义函数 ######### 
    
    # name 叫做函数func的形式参数,简称:形参
    def func(name):
        print('hello',name)
    
    # ######### 执行函数 ######### 
    #  'rain' 叫做函数func的实际参数,简称:实参
    func('rain')
    
    # #########执行结果###########
    hello rain

    普通参数的特点:

    • 定义了几个参数个数,调用时必须给定所有参数
    • def func(name,age):
          print('hello %s ,how old are you ? %s ' %(name,age))
      func('rain')
      
      ####报错信息####
      TypeError: func() missing 1 required positional argument: 'age'    

      ####正确调用####
      func('rain',21)

      hello rain ,how old are you ? 21 

    默认参数:(必须放下参数列表的最后面)

    • 当用户没有给定参数值时,直接使用默认参数,不会报错
    def func(name, age = 21):
        print ("%s:%s" %(name,age))
    
    # 指定参数
    func('rain', 19)            # rain:19
    # 使用默认参数
    func('rain')                # rain:21
    注:默认参数需要放在参数列表最后,否则就会报错!原因是:他的参数赋值是一个一个的赋值。如果提供了默认值的形参,你默认一定要往后排序为了就是你给那些没有陪默认值的参数 !

    指定参数:(将实际参数给指定的形式参数)

    def func(name,age=21):
        print('hello %s 
    how old are you ? %s'%(name,age))
    
    #将实际参数给指定的形式参数
    func(age='rain',name=22)
    
    #打印结果
    hello 22 
    how old are you ? rain

     动态参数:

     例子:1 (*args,默认将传入的参数,全部放置在元组中)

    def func(*args):
        print(args)
    
    func(11,22,33,44,55)
    #输出结果:(11, 22, 33, 44, 55)
    
    #传递一个 list列表
    lists = [11,22,33,44,55,66]
    func(lists)
    #输出结果:([11, 22, 33, 44, 55, 66],)
    
    func(*lists)
    #输出结果: (11, 22, 33, 44, 55, 66)

    将接收到参数值,转换成元组中的一个元素;
    func(*lists) 带*可以避免成为元组中的列表元素 

     例子:2(**args,默认将传入的参数,全部放置在字典中)

    #接收一个key:values的值
    def func(**args):
        print(args)
    
    # 执行方式一
    func(name='rain',age=21)
    #输出结果:{'name': 'rain', 'age': 21}
    
    # 执行方式二
    dicts = {'name':'rain','age':21}
    func(**dicts)
    #输出结果:{'name': 'rain', 'age': 21} 

    例子:3(整合了*args,**args) 

    def func(*args,**kwargs):
        print (args)
        print(kwargs)
    
    func(11,22,33,44,name='rain',age=21,)
    #返回结果:
    # (11, 22, 33, 44)
    # {'name': 'rain', 'age': 21}

    内置函数

     如何查询内置函数

    如何查询内置函数的使用
    >>> li = [11,22,33,44]
    >>> type(li)  #查看数据类型
    <type 'list'>  
    >>> dir(list)  #查看类型包含的那些方法
    >>>help(list)  #查看类型中包含的方法的详细说明

    #其它数据类型也使用同样的方法

    、三元运算

    1 result = 值1 if 条件 else 值2

     例子:

    #普通代码表达式
    name = input("输入用户名:")
    if name ==  'rain':
        print("用户名正确")
    else:
        print("用户名不对")
    
    #三目运算
    name = input("输入用户名:")
    print("用户名正确") if name == 'rain' else print("用户名不对")

    函数的作用域

    #这里的name为局部变量,所以在函数体外使用是会报"NameError"
    def
    say(): name = "rain" print(name) say() def say(): name = "rain" print(name) say() print(name) #输出结果 #NameError: name 'name' is not defined

     全局变量

    #这里的name为全局变量,全局变量可以在函数体内使用,也可以在函数体外使用
    name = 'rain'
    def say():
        name2 = "sunny"
        print(name)             #rain
        print(name2)            #sunny
    say()
    print(name)                 # #rain
    
    #
    输出结果 rain sunny rain

     总结:函数的作用域就是在函数里定义的变量不能被外面使用!但是外部全局定义的全局变量在函数内是可以使用的。

     在外面定义的全局变量可以在函数内修改,但函数外面不生效!!!(相当于函数外直接屏蔽了函数内的所有变量)

    name = 'rain'
    def say():
        name = 'wind'
        name2 = "sunny"
        print(name)             #wind(在函数内改变了)
        print(name2)            #sunny
    
    say()
    print(name)                 #rain(但是外面调用还是没有改变)
    print(name2)         # NameError: name 'nam2' is not defined

    如果想在函数里改变全局变量,如下:

    name = 'rain'
    def say():
        global name
        name = 'wind'
        name2 = "sunny"
        print(name)             #wind(在函数内改变了)
        print(name2)            #sunny
    
    say()
    print(name)                 #wind(在函数外也发生了改变)

    return参数

    return在这里作用为:当i=5时,中止循环

    def count():
        for i in range(3,10):
            if i = 5:
                return
            else:
                print i
        print "Hello World"   #所以当i=5的时候就直接跳出了函数了,这里是不会被打印出来了!不是循环!!!
    count()
    
    输出结果:
    3
    4
    5

    return在这里作用为: 利用return返回值来判断程序是否正常执行

    def names():
        name = input('input your name :')
        if name == 'rain':
            return True
        else:
            return False
    
    ret = names()
    print(ret)
    
    if ret:
        print("用户名正确")
    else:
        print("用户名错误")
    
    ####输出结果
    input your name :rain
    True
    用户名正确
    
    ####输出结果
    input your name :sunny
    False
    用户名错误

    四、文件操作

    操作文件时,一般需要经历如下步骤:

    • 打开文件
    • 操作文件

    1、打开文件

    文件句柄 = open('文件路径', '模式')


    打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,写读
    • a+,同a

    "U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)

    • rU
    • r+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab

    2、使用方法

      1 class file(object):
      2   
      3     def close(self): # real signature unknown; restored from __doc__
      4         关闭文件
      5         """
      6         close() -> None or (perhaps) an integer.  Close the file.
      7          
      8         Sets data attribute .closed to True.  A closed file cannot be used for
      9         further I/O operations.  close() may be called more than once without
     10         error.  Some kinds of file objects (for example, opened by popen())
     11         may return an exit status upon closing.
     12         """
     13  
     14     def fileno(self): # real signature unknown; restored from __doc__
     15         文件描述符  
     16          """
     17         fileno() -> integer "file descriptor".
     18          
     19         This is needed for lower-level file interfaces, such os.read().
     20         """
     21         return 0    
     22  
     23     def flush(self): # real signature unknown; restored from __doc__
     24         刷新文件内部缓冲区
     25         """ flush() -> None.  Flush the internal I/O buffer. """
     26         pass
     27  
     28  
     29     def isatty(self): # real signature unknown; restored from __doc__
     30         判断文件是否是同意tty设备
     31         """ isatty() -> true or false.  True if the file is connected to a tty device. """
     32         return False
     33  
     34  
     35     def next(self): # real signature unknown; restored from __doc__
     36         获取下一行数据,不存在,则报错
     37         """ x.next() -> the next value, or raise StopIteration """
     38         pass
     39  
     40     def read(self, size=None): # real signature unknown; restored from __doc__
     41         读取指定字节数据
     42         """
     43         read([size]) -> read at most size bytes, returned as a string.
     44          
     45         If the size argument is negative or omitted, read until EOF is reached.
     46         Notice that when in non-blocking mode, less data than what was requested
     47         may be returned, even if no size parameter was given.
     48         """
     49         pass
     50  
     51     def readinto(self): # real signature unknown; restored from __doc__
     52         读取到缓冲区,不要用,将被遗弃
     53         """ readinto() -> Undocumented.  Don't use this; it may go away. """
     54         pass
     55  
     56     def readline(self, size=None): # real signature unknown; restored from __doc__
     57         仅读取一行数据
     58         """
     59         readline([size]) -> next line from the file, as a string.
     60          
     61         Retain newline.  A non-negative size argument limits the maximum
     62         number of bytes to return (an incomplete line may be returned then).
     63         Return an empty string at EOF.
     64         """
     65         pass
     66  
     67     def readlines(self, size=None): # real signature unknown; restored from __doc__
     68         读取所有数据,并根据换行保存值列表
     69         """
     70         readlines([size]) -> list of strings, each a line from the file.
     71          
     72         Call readline() repeatedly and return a list of the lines so read.
     73         The optional size argument, if given, is an approximate bound on the
     74         total number of bytes in the lines returned.
     75         """
     76         return []
     77  
     78     def seek(self, offset, whence=None): # real signature unknown; restored from __doc__
     79         指定文件中指针位置
     80         """
     81         seek(offset[, whence]) -> None.  Move to new file position.
     82          
     83         Argument offset is a byte count.  Optional argument whence defaults to
     84 (offset from start of file, offset should be >= 0); other values are 1
     85         (move relative to current position, positive or negative), and 2 (move
     86         relative to end of file, usually negative, although many platforms allow
     87         seeking beyond the end of a file).  If the file is opened in text mode,
     88         only offsets returned by tell() are legal.  Use of other offsets causes
     89         undefined behavior.
     90         Note that not all file objects are seekable.
     91         """
     92         pass
     93  
     94     def tell(self): # real signature unknown; restored from __doc__
     95         获取当前指针位置
     96         """ tell() -> current file position, an integer (may be a long integer). """
     97         pass
     98  
     99     def truncate(self, size=None): # real signature unknown; restored from __doc__
    100         截断数据,仅保留指定之前数据
    101         """
    102         truncate([size]) -> None.  Truncate the file to at most size bytes.
    103          
    104         Size defaults to the current file position, as returned by tell().
    105         """
    106         pass
    107  
    108     def write(self, p_str): # real signature unknown; restored from __doc__
    109         写内容
    110         """
    111         write(str) -> None.  Write string str to file.
    112          
    113         Note that due to buffering, flush() or close() may be needed before
    114         the file on disk reflects the data written.
    115         """
    116         pass
    117  
    118     def writelines(self, sequence_of_strings): # real signature unknown; restored from __doc__
    119         将一个字符串列表写入文件
    120         """
    121         writelines(sequence_of_strings) -> None.  Write the strings to the file.
    122          
    123         Note that newlines are not added.  The sequence can be any iterable object
    124         producing strings. This is equivalent to calling write() for each string.
    125         """
    126         pass
    127  
    128     def xreadlines(self): # real signature unknown; restored from __doc__
    129         可用于逐行读取文件,非全部
    130         """
    131         xreadlines() -> returns self.
    132          
    133         For backward compatibility. File objects now include the performance
    134         optimizations previously implemented in the xreadlines module.
    135         """
    136         pass
    文件使用方法

     

    打开文件
    f = open('test.txt', 'r') # 只读
    f = open('test.txt', 'w') # 只写,先清空原文件
    f = open('test.txt', 'x') # 文件存在,报错;不存在,创建并只写
    f = open('test.txt', 'a') # 追加
    f = open('test.txt','r', encoding="utf-8") # 指定编码格式
    
    #以写的方式打开
    f = open('test.txt','w')
    f.write("rain 21")
    f.close()

    #以追加的方式打开
    f = open('test.txt','a')
    f.write(' ')
    f.write("sunny 22")
    f.close()

    #以读的方式打开
    f = open('test.txt','r')
    fi = f.read()
    print(fi)
    f.close()
    #输出结果

      rain 21
      sunny 22 

    五、with方法

    为了避免打开文件后忘记关闭,可以通过管理上下文,即:(建议使用此方法打开文件)

    with open('文件路径', '模式')  as 文件句柄:
           ......
           ......

     如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

    with还同时支持同时打开多个文件

    with open('test.txt','r') as object1,open('test1.txt','a') as object2:
        for i in object1.readlines():
            i=i.strip()
            print (i)
            object2.write(i)
            object2.write('
    ')
    
    #每读一行test.txt的文件,并将读取的文件写入test1.txt中

     

  • 相关阅读:
    xml模块
    json&pickle&shelve
    C#基础-关于用json给控制台程序传值的坑
    【MediaElement】WPF视频播放器【3】
    【Treeview】遍历本地磁盘
    【WCF】WCF中的InstanceContext与ConcurrencyMode【转】
    C#基础-FileStream实现多线程断点续传
    C#基础-FileStream
    C#基础-out与ref字段
    【Visual Installer】如何提醒用户卸载旧版本软件
  • 原文地址:https://www.cnblogs.com/yxy-linux/p/5520060.html
Copyright © 2020-2023  润新知