首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

第9.11节 Python中IO模块文件打开读写操作实例

  • 23-09-22 19:21
  • 2805
  • 6245
blog.csdn.net

为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试。
一、 测试程序说明
该程序允许测试人员选择一个文件,自己输入文件打开模式、写入文件的位置以及写入内容,程序按照输入尝试进行文件打开和写入,当打开异常或定位文件写入位置异常时会要求重新选择。最后写入文件时判断文件打开模式是否为二进制,以确认写入时的数据是否需要进行编码处理。

二、 老猿验证的一些结论

  1. xwa模式不能一起出现;
  2. w模式写入,会覆盖原文件,如果指定偏移量就在对应偏移位置直接写,前面内容直接为ASCII码0;
  3. x模式下,如果原文件存在,则不能打开文件;
  4. r+变成可读写;
  5. a模式下,seek定位没有作用;
  6. 如果写入文件位置超出文件长度,则文件会自动扩充。

三、 源代码

#coding:utf-8         
#Python文本文件写测试,动态输入文件打开模式和偏移位置

import io
    
def dealfile():
    filename=input("请输入要读写的文件,回车则默认为'c:\temp\test.txt':
").strip(' 
')
    if len(filename)==0:filename=r'c:	emp	est.txt'
    
    while True:
        mode=input("请输入文件读写模式:
").strip(' 
')
        print(f"文件读写信息如下:
    文件名:{filename}  
    读写模式:{mode}")
        try:
            fp = open(filename,mode)
        except FileNotFoundError:
            print(f"文件{filename} 不存在!")
            return
        except Exception as e:
            print(f"文件《{filename}》读写打开失败,异常信息如下:
{e}")  
            continue
        else:break
     
    while True:  
        pos=input("请输入偏移量计算参考位置(0:文件开头,1:当前位置,2:文件结尾,缺省为文件开头,其他值退出循环):").strip(" 
")
        
        if not pos:pos=0
        elif not pos.isdigit():break;
        else: pos = int(pos)
        if pos not in (0,1,2):break
        offset=input("请输入文件写入相对偏移量(缺省为0):").strip(" 
")
        if not offset:offset=0
        else:offset = int(offset)
        print(f"文件读写信息如下:
    文件名:{filename}  
    读写模式:{mode}  偏移量计算参考位置:{pos} ,文件偏移量:{offset}")
        try:    
            fp.seek(offset,pos)
        except Exception as e:
            print("定位写入位置失败,异常情况如下:
{e}")
            continue
        
        buff=input("请输入需要写入文件的数据(exit退出,回车忽略):")
        choice = buff.strip(' 
')
        if choice=='exit':
            print("结束循环,准备退出")
            break;
        elif not choice: continue
        if mode.find('b')>-1:fp.write(buff.encode())
        else:fp.write(buff)
        print(f"写入内容如下:
{buff}")
    fp.close()
    print("程序退出!")

dealfile()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

四、 部分测试截屏
在这里插入图片描述
执行后读写文件截屏:其中前4行时原文件,后面是新写入内容。
在这里插入图片描述

本节提供了一个文件读写测试的程序,介绍了老猿验证的一些结论,并举例介绍了部分测试验证的截屏,大家可以使用该程序自行测试一下文件操作的相关内容。

老猿Python,跟老猿学Python!
博客地址:http://iyenn.com/index/link?url=https://blog.csdn.net/LaoYuanPython

请大家多多支持,点赞、评论和加关注!谢谢!

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览333612 人正在系统学习中
老猿Python
微信公众号
专注Python相关语言、图像音视频处理、AI
注:本文转载自blog.csdn.net的LaoYuanPython的文章"https://blog.csdn.net/LaoYuanPython/article/details/98163317"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top