• 【Python 文件操作&函数 05】


    一、文件操作

    1、打开文件

    f = open(r'/Users/wufq/Desktop/userinfo.txt',
             mode='r',
             encoding='UTF-8')

    注意:r'/Users/w这里的r是取消所有转移符转义的意思,mode=r r是读,w是写,encoding='UTF-8'是编写格式

    2、读文件

    f是一个文件句柄,所有和文件相关的操作都要依赖f,也可以叫做文件操作符

    1、read()一次性读所有

    2、readline()  一次读一行

    print(f.read())
    print
    (f.readline())

    3、for循环读

    for line in f:
        line=line.strip() #去掉所有空白
        if line:print(line) #if判断后面只有一句的话,可以直接写到后面

    4、关闭文件   -->打开一个文件必须的关闭释放资源

    f.close()

    5、写文件  -->写文件

    f = open(r'/Users/wufq/Desktop/userinfo.txt',
             mode='w',
             # 已写的方式打开一个已经存在的文件,相当于清空一个文件
             # 已写的方式打开一个不存在的文件,相当于新建一个空文件
             encoding='UTF-8')
    f.write('张三|1234\n')
    f.write('李四|12346')
    f.close()

    如果写入多个内容,默认是不会换行的,可以用\n来换行

    mode='w' 会存在一个问题,就是每次执行的话就会清空文件,如何才能不清空而直接在后面进行追加呢

    mode ='a'  就可以直接追加。(a是append的意思)

    6、参数的介绍  -->已字节进行打开文件,并读、写;图片和视频文件如果要出来IDE话,是不能通过制定编码的形式打开的,mode='rd'是已字节形式读文件,mode=‘wb’是已字节形式写文件 ;read()表示读取所有,

    read(n) n表示n个字节 -->图片和视频的这个n表示的是字节,文件的read(n)表示的是字符,比如:a表示一个字符占一个字节,“你”表示一个字符但是占3个字节

    # 读取视频流,然后复制
    import os
    # 获取视频流文件大小
    size = os.path.getsize('/Users/wufq/PycharmProjects/pythonProject1/py27/day02/python.avi')
    file1 = open(r'/Users/wufq/PycharmProjects/pythonProject1/py27/day02/python.avi',mode='rb')
    file2 = open(r'/Users/wufq/PycharmProjects/pythonProject1/py27/day02/python_bak.avi',mode='wb')
    
    while size>1024: 
        context = file1.read(1024) #已1024个字节读取
        file2.write(context)
        size -=1024
    else:
        context = file1.read(size)
        file2.write(context)
    
    file1.close()
    file2.close()

    以with open() as f 的形式编写:

    import os
    # 获取视频流文件大小
    size = os.path.getsize('/Users/wufq/PycharmProjects/pythonProject1/py27/day02/python.avi')
    with open(r'/Users/wufq/PycharmProjects/pythonProject1/py27/day02/python.avi',mode='rb') as file1,\
        open(r'/Users/wufq/PycharmProjects/pythonProject1/py27/day02/python_bak1.avi', mode='wb') as file2 :
        while size>1024:
            context = file1.read(1024) #已1024个字节读取
            file2.write(context)
            size -=1024
        else:
            context = file1.read(size)
            file2.write(context)
    
    file1.close()
    file2.close()

    7、修改文件

      删除文件 os.remove('文件路径')

      修改文件 os.rename('源名','目的名')

    注意:文件的修改和重命名一定在文件关闭状态下才能修改

    二、函数

    1、定义  def 函数名():

    2、调用  直接用函数名调用

    3、返回值

    lst=[1,3,2,5]
    def mylen():
        return len(lst) #如果想要函数有返回值,必须要用return返回
    
    print(mylen())
    • return 后,函数就结束了,return后面的代码就不会被执行了
    • 不写return,所有代码执行完毕自动结束,返回值为none
    • 只写return,遇到return程序接受,返回值none
    • 写return 结果 ,程序结束,返回结果,如果是return 结果1,结果2,结果3,结果会被变成元组返回给调用者

    4、参数

    # 站在形参定义的角度上
    #name,score位置参数,总是写在形参的最开始
    #gender默认参数(关键字参数)总是写在位置参数之后的
    def students(name,score,gender=''):
        print('学习Python的同学%s,性别%s,成绩%s'%(name,score,gender))
    
    students('张三',0)
    students('李四',1)
    students('赵武',1,'')

    name,score就是位置参数,gender是默认的参数一定是在后面的

    |-- 动态传参数一:*args

    # 动态传参
    def sum_1(*args):
        s=0
        for i in args:
            s +=i
        return s
    
    print(sum_1(1,2)) #3
    print(sum_1(1,2,3)) #6
    print(sum_1(1,2,3,4)) #10

    *args动态参数放在位置参数之后

    |-- 动态参数二:**kwargs  放在最后  **kwargs接受的是关键字的参数(如:a=1,b=2)

    def kk(**kwargs):
        print(kwargs)
    
    kk(a=1,b='kk') #{'a': 1, 'b': 'kk'}

    总结:各类参数放的位置:位置参数,*args,默认参数,**kwargs

    |-- 把列表拆开传入

    def pp(a,b,c):
        print(a)
        print(b)
        print(c)
    lst_00 =[1,2,3]
    res_00=pp(*lst_00)
    print(res_00)

    5、函数进阶:命令空间和作用域

    高阶函数

    global和nonlocal

  • 相关阅读:
    第一天
    python自测——其他内容
    python自测——正则表达式
    python自测——高级特性
    人机对战石头剪刀布代码
    [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
    Dijkstra概念
    洛谷p1339--热浪
    0-1背包问题变形------------cow exhibition
    [Poi2005]Piggy Banks小猪存钱罐
  • 原文地址:https://www.cnblogs.com/frankruby/p/16119619.html
Copyright © 2020-2023  润新知