python文件操作及函数学习

简介:
  1. 文件操作

        文件读

        f = open('a.txt', encoding='utf-8', mode='r')  #只读方式打开文件

        data = f.read()  #read函数读取所有文件内容,光标移动到末尾

        data2 = f.read()  #这次都不到内容,因为光标在文件末尾

        f.seek(0)   #seek函数使光标移动到文件开始位置  

        data3 = f.read()  #读到文件所有内容,因为光标移动到开始位置    

        f.close()   #close关闭文件

        f.closed  #判断文件是否关闭,关闭返回True,否则返回False

        f.encoding  #打印编码格式

        f.readable()  #判断文件是否已r模式打开,是则返回True,否则返回False

        f.readline()  #一次读取一行

        f.readlines()  #读取所有行,按照行存成列表


        
        文件写

        f = open('a.txt', 'w', encoding='utf-8')  #没有则创建,有则清空

        print(f.writable())   #writable我文件是否可写,可写返回True, 否则返回False

        f.write('11111111\n222')  #write写文件

        f.wirtelines(['\n5555\n', '6666666666\n', '777777\n'])  #写入多行文件


        文件修改

        read_f = open('b.txt', 'r')

        write_f = open('.b.txt.swap', 'w')

        for line in read_f.readlines():

            if line.startswith('1111'):

                line = '2222222\n'

            write_f.write(line)

        read_f.close()

        write_f.close()

        os.remove('b.txt')      #用到os模块,remove函数删除文件

        os.rename('.b.txt.swap', 'b.txt')  #rename重命名文件


        f = open('a.txt', 'r+')  #读写模式打开文件

        f = open('a.txt', 'w+')  #写读模式打开文件

        f = open('a.txt', 'a+')   #追加并且可读


        为了避免忘记用close关闭文件,可以使用以下方法来操作文件

        with open('a.txt','r', encoding='utf-8'):

            print(f.read())


        补充知识:for循环可以使用带else语句,for循环结束没被打断,会进入else,否则不执行else

        for i in range(1,11):

            if i == 1:

                break

            print(i)

        else:

            print("打印完毕")


        i = 0

        while i < 5:

            print(i)

            i += 1 

            if i == 3:

                break

        else:

            print("打印完毕")


        with open('a.txt', 'r', encoding='utf-8') as f:      #从文件读到的内容是字符

            f.seek(3)    #数字3代表光标移动3个字节,默认是文件起始位置

            f.seek(2,1)  #1代表光标从当前位置移动2个字节

            seek()的三种模式:

            (1)f.seek(p,0)  移动当文件第p个字节处,绝对位置

            (2)f.seek(p,1)  移动到相对于当前位置之后的p个字节

            (3)f.seek(p,2)  移动到相对文章尾之后的p个字节

            print(f.tell())    #打印光标所在的位置

            print(f.read())


        python实现tail -f 功能

         with open('access.log', 'r') as f:

            f.seek(0,2)

            while True:

                line = f.readline()

                if line:

                    print("新增一行:" + line)


2. 函数

        函数实现代码冗余,可读性强,有效统一管理维护成本低.

        语法:

        def  函数名(参数1,参数2,...):

            """文档注释"""

            函数体

            return  value 


        自定义函数,必须先定义后引用,否则相当于应用一个没有定义的变量

        无参函数

        def print_star():

            print('*' * 6)

        print_star()


        有参函数

        def  my_max(x,y):

            if x > y:

                return x

            else:

                return y

        print(my_max(1,2))


        三元表达式

        res = x if x > y else y


        空函数

        def insert()

            """功能"""

            pass


        函数分为形参和实参

        定义阶段

        def foo(x, y):

            print(x,y)

        调用阶段

        foo(1,2)


        函数的参数分为5种:位置参数,关键字参数,默认参数,可变长参数(*args, **kwargs),命名关键字参数

        位置参数:

        def foo(x,y,z):    #必须被传值的参数

            print(x,y,z)


        关键字参数:  key=value 

        def foo(x,y,z):

            print(x,y,z)

        foo(z=3,y=2,x=1)

        关键字实参必须在位置实参后面,不能重复给一个形参传值


        默认参数

        def register(name, age, sex='male'):

            print(name, age, sex)

        register(alex, 18)

        register(alex, 19, 'female')

        register(alex, 20, sex='male')

        默认参数必须跟在非默认参数后面,默认参数只在定义时赋值一次,默认参数的值通常定义成不可变类型


        可变长参数

        def  foo(x, y , *args):   #会把溢出的按位置定义的实参都接收,以元组的形式赋值给args

            print(x, y)

            print(args)

        foo(1,2,3,4,5)


        def foo(x, y, **kwargs):  #会把溢出的按位置定义的实参都接收,以字典的形式赋值给kwargs

            print(x, y)

            print(kwargs)

        foo(1, 2, a=3, c=4, b=5)


        命名关键字参数

        def foo(name,age=10,*args,sex='male',height,**kwargs):

            print(name)
           print(age)
           print(args)
           print(sex)
           print(height)
           print(kwargs)
       foo('alex',1,2,3,4,5,sex='female',height='150',a=1,b=2,c=3)

       
       以下方式等价
       foo(*[1,2,3,4])   <==> foo(1,2,3,4)
       foo(**{a:1, b:2})  <==>foo(a=1,b=2)
       
       def wrapper(*args, **kwargs):
               print(args)
               print(kwargs)
       wrapper(1,2,3,4, a=5, b=6)

        函数返回值有三种方式

        没有return关键字,返回None

        有关键字return  返回一个值

        有关键字return  返回多个值

        def foo():

            print('from foo:'
           
return 1, [2,3], (4,5), {'a':1,'b':2}
       v = foo()
       print(v)

           


     本文转自小白的希望 51CTO博客,原文链接:http://blog.51cto.com/haoyonghui/1926008,如需转载请自行联系原作者





相关文章
|
8天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
13 1
|
4天前
|
Python
python学习3-选择结构、bool值、pass语句
python学习3-选择结构、bool值、pass语句
|
2天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
14 0
|
3天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
4天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
4天前
|
Python
python学习12-类对象和实例对象
python学习12-类对象和实例对象
|
4天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
4天前
|
Python
python学习10-函数
python学习10-函数
|
4天前
|
存储 索引 Python
python学习7-元组
python学习7-元组
|
4天前
|
Python
python学习8-集合
python学习8-集合

热门文章

最新文章