• Python open with as---文件处理


    持续更新中

    该python学习专栏仅仅用于记录个人在python学习过程中遇到的一些语法和问题,不包括详细的python语法知识。对于python初学者友好。

    一、文件读取

    1、open()

    这种方法是创建文件对象的传统方法,虽然也没有什么问题,但是它使文件对象一直处于打开状态,直到使用 close 函数明确地关闭或直到脚本结束,不够清晰,还被证明在更复杂的脚本中会导致错误。

    1、使用sys,argv[]读取传递给python脚本的命令行参数,argv[0]是脚本所在的相对路径,argv[1]是命令行产地给脚本的第一个附加参数,以此类推。

    # script_path = /opt/python/scripts/
    # script_name = read_file.py
    # file_path = /opt/python/files/
    # file_name = file.txt
    import sys
    dir1 = sys.argv[0]
    dir2 = sys.argv[1]
    print(dir1,'\n',dir2)
    # 在终端执行命令
    >python3  /opt/python/scripts/read_file.py /opt/python/files/file.txt
    >/opt/python/scripts/read_file.py       # dir1
    >/opt/python/files/file.txt	            # dir2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2、读取文件数据open()
    2.1 打开文件
    f = open(file=file_path,mode=open_mode)
    例:

    #两种方法均可
    f = open('read.txt','r')
    f = open(file='read.txt', mode='r')
    
    • 1
    • 2
    • 3
    open_mode Meaning
        --------- ---------------------------------------------------------------
        '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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.2 读取文件中的数据
    文件内容:read.txt

    I’m
    already
    much
    better
    at
    Python

    # 输出文件内容的几种方式
    # 方式一 输出全部内容1
    f = open(file='read.txt', mode='r')
    for row in f:
        print(row.strip())
    f.close()
    # 方式二 输出全部内容2
    f1=f.read()
    print(f1)
    # 方式三 按行读取内容,包含最后的换行符“\n
    f2 = f.readline(size:int -1)
    # size 为可选参数,用于指定读取每一行时,一次最多读取的字符(字节)数。
    # 方式四 读取文件中的所有行,包含最后的换行符“\n
    f3 = f.readlines()
    #它和调用不指定 size 参数的 read() 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容。
    #f3 output:["I'm\n", 'already\n', 'much\n', 'better\n', 'at\n', 'Python']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2、with as

    这种语法在 with 语句结束时会自动关闭文件,其基本语法格式:

    with 表达式 [as target]:
        代码块
    
    • 1
    • 2

    用 [] 括起来的部分可以使用,也可以省略。其中,target 参数用于指定一个变量,类似于open中的变量名f。

    # 除了打开文件的方式不一样以外,其他用法同open一致,且不用调用close()函数来关闭f对象
    with open('read.txt', 'r') as f:
        for row in f:
            print(row.strip())
    
    • 1
    • 2
    • 3
    • 4

    二、文件写入

    写入文本文件

    open_mode:
    “w”:在将文本插入当前文件流位置(默认为 0)之前,将清空文件。
    “a”:文本将插入当前文件流的位置,默认情况下插入文件的末尾。

    string = "I'm happy\n"
    strings = ['hello\n', 'today\n', 'sunny']
    with open('read.txt', 'w') as f: #将会清空文件read.txt
        f.write(string)  # 将单个字符串写入一个文件,
        f.writelines(strings)  # 将一系列字符串写入一个文件
    with open('read.txt', 'a') as f: #在read.txt末尾追加新的字符串
        f.write(string)  # 将单个字符串写入一个文件,
        f.writelines(strings)  # 将一系列字符串写入一个文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三、创建新的文件并写入数据

    创建一个csv文件

    string = "I'm happy\n"
    strings = ['hello\n', 'today\n', 'sunny\n']
    with open('read.csv', 'x') as f: # 将会清空文件read.txt
        f.write(string)  # 将单个字符串写入一个文件,
        f.writelines(strings)  # 将一系列字符串写入一个文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    【C++ Efficiency】lazy evaluation(缓式评估)的4种用途
    分布式事务解决方案汇总
    java计算机毕业设计基于安卓Android的教学考勤系统APP
    createSocketTask:fail wcwss url not in domain list 小程序网络异常
    PHP笔记:时间日期
    云环境风险评估技术
    jvm之java类加载机制和类加载器(ClassLoader)的详解
    计算机网络---物理层疑难点总结
    ReentrantLock锁与AQS的联系
    代码重构的一些理由
  • 原文地址:https://blog.csdn.net/weixin_44179427/article/details/126265519