zoukankan      html  css  js  c++  java
  • 第四章 文件操作

    ​ 文件操作主要用来读取、修改、和创建指定文件。

    4.1 文件基本操作

    1. 文件打开格式

    f = open('文件路径',mode='r/w/a...',encoding='utf-8')    # 不写会默认
    

    2. 文件写入格式

    • file.write(str)将字符串写入文件,返回的是写入的字符长度
    # mode= 'w'
    # 打开文件时,会先清空历史文件,没有则创建
    f.write('a')
    

    3. 文件读取格式

    # mode= 'r'
    # way1 整个文件直接读取到RAM
    f.read()
    f.read(1) # 如果指定编码格式,会读出 1 个字符
    					# 如果是 mode= rb 会读出 1 个字节
    
    # way2 按行读取文件
    # 一般用于for循环中,可用来读取 GB 级别的文件
    f.readline() 只读取一行
    f.readlines()  # 一次性加载所有内容到内存,并根据行分割成字符串
    # 读取一行时也可以使用
    for line in v:
      	line = line.strip('
    ')
    

    4. 文件的关闭

    # 当对文件操作完成后必须关闭,否则不会存储到本地磁盘
    f.colse()
    # 刷新缓冲区里任何还没写入的信息
    

    4.2 打开模式

    1. mode 分类

    ​ mode常见的有r/w/a(只读/写/追加),r+/w+/a+(读写/写读/追加读),rb/wb/ab(以二进制方式进行读/写/追加),r+b/w+b/a+b

    模式 r r+ w w+ a a+
    + + + +
    + + + + +
    创建 + + + +
    覆盖 + +
    指针在开始 + + + +
    指针在结尾 + +

    4.3 其他操作

    ​ 断点续传,通过终端与服务器之间的交互,找到文件断点位置,从而实现文件的单次传输。此种操作可以使用file.seek(n)实现,n表示字节数。

    1. 文件定位

    seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

    • file.seek(n)

    • 光标移动到指定字节位置。注意

    • file.tell()

      • 返回当前光标位置。可以用于断点续传技术。

    2. 重命名和删除文件

    • rename()方法需要两个参数,当前的文件名和新文件名。
    # 示例
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import os
    # 重命名文件test1.txt到test2.txt。
    os.rename( "test1.txt", "test2.txt" )
    
    • 你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import os
    # 删除一个已经存在的文件test2.txt
    os.remove("test2.txt")
    

    3. f.flush()

    • 强制把内存中的数据,刷到硬盘中。主要用于操作文件时间过长,无法自动保存的问题。
    v = open('a.txt',mode='a',encoding='utf-8')
    while True:
      	val = input('请输入:')
      	v.write(val)
     	 	v.flush()		# 强制把内存中的数据,刷到硬盘中
    v.close()
    

    4.4 一次性操作文件

    v = open('a.txt', mode='a', encoding='utf-8')
    v1 = v.read()
    v.close()
    
    # 缩进中的代码执行完毕后,自动关闭文件
    with open('a.txt', mode='a', encoding='utf-8') as v:
    	data = v.read()
    

    4.5 文件修改(示例)

    **Note: **

    1. 文件在存储的时候,是连续存储的。文件较大时可以按行读取,修改。
    2. 按行读取时,一定要注意一行结束位置有
    # 示例1 
    # 文件的修改,需要先把内容读到内存,修改后再存储
    with open('a.txt', mode='r', encoding='utf-8') as v:
    	data = v.read()
    print(data)
    
    new_data = data.replace('a', 666)
    with open('a.txt', mode='w', encoding='utf-8') as v:
    	data = v.wirte(new_data)
    
    # 示例2  修改指定字符
    # 大文件的修改
    f1 = open('a.txt', mode='r', encoding='utf-8')
    f2 = open('b.txt', mode='r', encoding='utf-8')
    for line in f1:
      	line = line.replace('a', 'b')
        f2.write(line)
    f1.close
    f2.close
    
    # 一次性打开修改和关闭
    with open('a.txt', mode='r', encoding='utf-8') as f1,open('b.txt', mode='r', encoding='utf-8') as f2:
    	for line in f1.readlines():
    # 或者如下写法
    	for line in f1:   # 这种写法,也会一行行读取,包括 
     也会单独一行读出
      	line = line.replace('a', 'b')
        f2.write(line)
    
  • 相关阅读:
    Jmeter实例:cookie
    Jmeter:分布式执行(多台测试机一起执行)
    Jmeter参数化(普通参数、动态参数)
    Jmeter脚本编写、验证、结果查看
    性能测试准备
    性能缺陷分析及定位方法
    Jmeter环境搭建
    SpringBoot获取移动端mobile的信息
    DATE_FORMAT()参数
    Spring web Servcies集成和使用
  • 原文地址:https://www.cnblogs.com/henryw/p/11681376.html
Copyright © 2011-2022 走看看