为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试。

一、 测试程序说明

该程序允许测试人员选择一个文件,自己输入文件打开模式、写入文件的位置以及写入内容,程序按照输入尝试进行文件打开和写入,当打开异常或定位文件写入位置异常时会要求重新选择。最后写入文件时判断文件打开模式是否为二进制,以确认写入时的数据是否需要进行编码处理。

二、 老猿验证的一些结论

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

四、 部分测试截屏



执行后读写文件截屏:其中前4行时原文件,后面是新写入内容。

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

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


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

最新文章

  1. 《机器学习实战》 code debug
  2. CSS实现水平居中的4种思路
  3. 如何为自己的windows 8系统的电脑更换锁屏壁纸
  4. VS对路径的访问被拒绝
  5. linux设备驱动归纳总结(五):3.操作硬件——IO静态映射【转】
  6. 谈C#中的Delegate
  7. Docker 第三篇--构建Image
  8. text绑定(The "text" binding)
  9. 用fluent模拟内循环床气化燃烧(调试过程记录)
  10. 在SQL Server中用好模糊查询指令LIKE
  11. 开发环境配置:jdk8的详细安装教程&&tomact的详细安装教程&&java环境变量的配置&&tomcat启动总失败原因
  12. 2018-2019-2 20165225『网络对抗技术』Exp2:后门原理与实践
  13. kafka_2.11-2.0.0_安装部署
  14. CentOS 7 搭建Jumpserver跳板机(堡垒机)
  15. mysql5.5 报Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
  16. Java 利用poi生成excel表格
  17. deepin 下mysql编码问题utf8的解决
  18. 使用Fiddler发送POST请求
  19. DevExpress学习03——label控件的背景色问题
  20. Swift-Debug下打印函数名和行数

热门文章

  1. 对hadoop之RPC的理解
  2. 腾讯云--腾讯云sdk-实现脚本修改腾讯云负载均衡权重
  3. 9.集合set和frozenset冻结集合函数
  4. 关于mybatis拦截器,对结果集进行拦截
  5. http 响应 ngx_http_send_header ngx_http_output_filter
  6. [LeetCode题解]21. 合并两个有序链表 | 递归
  7. C#高级编程之特性
  8. powertool
  9. php 进行图片裁剪
  10. php(tp5)实现分页效果