• Python3笔记048


    第10章 文件及目录操作

    10.1 文件操作

    文件操作:创建、打开、关闭、写入、读取、删除、拷贝、重命名、

    1、创建和打开文件

    # open函数创建或打开一个文件,返回值是一个文件对象
    f = open("filename", mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
    参数说明
    f:函数open返回的文件对象
    filename:要创建或打开的文件名,采用路径加文件名的形式
    mode:可选参数,指定文件的打开模式,默认只读
    buffering:可选参数,指定读写文件的缓冲模式
    encoding:可选参数,编码方式
    

    mode参数说明

    'r'       open for reading (default)
    'w'       open for writing, truncating the file first
    'x'       create a new file and open it for writing
    'a'       open for writing, appending to the end of the file if it exists
    'b'       binary mode
    't'       text mode (default)
    '+'       open a disk file for updating (reading and writing)
    'U'       universal newline mode (deprecated)
    

    打开一个不存在的文件时先创建该文件

    # 在调用open()函数时,指定mode的参数值为w、w+、a、a+,这样当要打开的文件不存在时,就可以创建新的文件了。
    f = open(r"D:1Pythonpythonbasicwork1.txt", "a+")
    

    打开文件时指定编码方式

    # 指定编码方式:encoding='utf-8'
    file = open(r"D:1Pythonpythonbasicwork1.txt", "a+", encoding='utf-8')
    

    以二进制形式打开非文本文件

    f = open("D:\01Python\pythonbasic\测试工匠麻辣烫博客.png", 'rb')
    print(f.name)
    

    2、关闭文件

    # file.close() # 关闭文件对象
    f = open(r"D:1Pythonpythonbasicwork1.txt", "a+", encoding="utf-8")
    f.close()
    

    3、写入文件内容

    file.write(string)
    参数说明
    file:打开的文件对象
    string:要写入的字符串
    
    f = open(r"D:1Pythonpythonbasicwork1.txt", "a+", encoding="utf-8")
    for i in range(100):
        f.write("python
    ") # file.write(string)
    f.close()
    

    4、打开文件时使用with语句

    文件打开后要及时关闭,如果忘记关闭可能会有意想不到的问题;如果打开时抛异常,那么可能导致文件不能及时关闭。使用with来处理这样的问题。

    with expression as target:
    	with-body
    参数说明
    expression:指定表达式,可以是打开文件的open()函数
    target:指定一个变量,并且将expression的结果保存到该变量中
    with-body:指定with语句体
    
    # 不必写f.close(),with语句自动关闭打开的文件
    with open(r"D:1Pythonpythonbasicwork1.txt", "a+", encoding="utf-8") as f:
        for i in range(100):
            f.write("python
    ")
    

    5、读取文件内容

    • 读取指定字符
    # read()
    import os
    
    filename = r"D:1Pythonpythonbasicwork1.txt"
    
    if os.path.exists(filename) == True:
        f = open(filename, "r", encoding="utf-8")
        for i in f.read(5):  # read(5),数字代表读取字符的个数 
            print(i, end='')
    
    else:
        print("文件不存在,未执行重命名操作!")
    
    • 读取一行
    # readline()
    
    import os
    
    filename = r"D:1Pythonpythonbasicwork1.txt"
    
    if os.path.exists(filename) == True:
        f = open(filename, "r", encoding="utf-8")
        for i in f.readline(): # readline()
            print(i)
    
    else:
        print("文件不存在,未执行重命名操作!")
    
    
    • 读取全部行
    readlines()
    import os
    
    filename = r"D:1Pythonpythonbasicwork1.txt"
    
    if os.path.exists(filename) == True:
        f = open(filename, "r", encoding="utf-8")
        for i in f.readlines(): # readlines()
            print(i, end='')
    
    else:
        print("文件不存在,未执行重命名操作!")
    
    

    6、删除文件

    os.remove(path)
    os.remove('sdf.py')
    
    # 删除最后一级目录下的文件用remove方法
    import os
    
    filename = r"D:1Pythonpythonbasicwork1.txt"
    if os.path.exists(filename) == True:
        os.remove(filename)
        if os.path.exists(filename) == False:
            print("文件存在,已被删除!")
    else:
        print("文件不存在,未执行删除操作!")
    

    7、重命名文件

    os.rename(src,dst)
    
    # 重命名文件用rename命令
    import os
    
    filename = r"D:1Pythonpythonbasicwork1.txt"
    newfilename = r"D:1Pythonpythonbasicwork2.txt"
    if os.path.exists(filename) == True:
        os.rename(filename, newfilename)
        if os.path.exists(newfilename) == True:
            print("文件存在,重命名成功!")
    else:
        print("文件不存在,未执行重命名操作!")
    

    8、拷贝文件

    shutil 模块里面有很多目录文件操作的函数

    # 拷贝文件用shutil模块的copyfile函数
    from shutil import copyfile
    
    # 拷贝 d:/tools/first.py 到 e:/first.py
    copyfile('d:/tools/first.py', 'e:/first.py')
    

    注意,如果拷贝前,目标目录下已经存在,则会被覆盖,所以使用该函数一定要小心。

  • 相关阅读:
    c# 调用DeepAI
    c#
    c# Polygon 画多边形,
    WPF BitmapSource /BitmapImage 获取像素点颜色
    前端面试题汇总
    element 动态合并表格
    JS的乘、除、加、减法结果会有误差,在两个浮点数相乘的时候会比较明显
    shell中针对数字、filename字符串等的判断参数的总结
    Android TV : 电视输入框架(TIF)剖析
    ubuntu更新系统函数手册
  • 原文地址:https://www.cnblogs.com/infuture/p/13383443.html
Copyright © 2020-2023  润新知