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,如需转载请自行联系原作者





相关文章
|
1天前
|
程序员 C语言 Python
[oeasy]python0007_ print函数_字符串_display_电传打字机_程序员的浪漫
[oeasy]python0007_ print函数_字符串_display_电传打字机_程序员的浪漫
11 5
[oeasy]python0007_ print函数_字符串_display_电传打字机_程序员的浪漫
|
1天前
|
程序员 数据处理 Python
Python中的生成器函数及其应用
在Python编程语言中,生成器函数是一种强大的工具,它可以让我们以一种高效的方式处理大量的数据或者无限序列。本文将介绍生成器函数的基本概念、语法和原理,并结合实际案例探讨生成器函数在数据处理、内存优化等方面的应用。
|
8天前
|
Python
python中使用fillna()函数
python中使用fillna()函数
14 1
|
13天前
|
机器学习/深度学习 数据可视化 小程序
一步之遥:从python小白到精通大神,如何快速学习python?
一步之遥:从python小白到精通大神,如何快速学习python?
23 0
|
14天前
|
设计模式 数据挖掘 数据处理
Python中的函数
Python中的函数
9 4
|
14天前
|
Python
在Python中,pandas库的`get_dummies`函数
在Python中,pandas库的`get_dummies`函数
10 2
|
14天前
|
数据采集 机器学习/深度学习 开发工具
画【Python折线图】的一百个学习报告(三、设置全局 Label 颜色)
画【Python折线图】的一百个学习报告(三、设置全局 Label 颜色)
19 0
|
14天前
|
数据采集 机器学习/深度学习 JSON
画【Python折线图】的一百个学习报告(三、自动生成单一数据折线图)
画【Python折线图】的一百个学习报告(三、自动生成单一数据折线图)
16 0
|
14天前
|
数据采集 机器学习/深度学习 JavaScript
画【Python折线图】的一百个学习报告(二、pyecharts引入js文件)
画【Python折线图】的一百个学习报告(二、pyecharts引入js文件)
27 0
|
18天前
|
算法 Python
【Python指南 | 第五篇】数据类型转换、函数、转义字符,这一篇就够了
【Python指南 | 第五篇】数据类型转换、函数、转义字符,这一篇就够了
14 0

相关产品

  • 云迁移中心