分享

软件测试/测试开发丨Python文件操作 学习笔记

 江海博览 2023-11-02 发布于浙江
霍格沃兹测试开发学社
霍格沃兹测试开发学社
2023-10-8 16:05

本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接:Python侧开28期-偕行-学习笔记-python文件操作 - 学习笔记 - 测试人社区

文件操作

  • 在程序中操作文件和使用图形界面操作文件的过程基本一致,都要进行找到文件位置,打开文件,读写文件,关闭文件等操作。

1、打开文件

  • Python 使用 open 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
  • 完整格式:
open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • 简化格式:open(filename, mode='r', encoding=None);
    • filename: 必需,指定打开文件的路径(相对或者绝对路径);
    • mode: 可选,文件打开模式,默认为r只读模式;
    • encoding: 一般使用 utf8;
  • mode参数常见下表:

2、关闭文件

  • 文件在操作完以后,需要将其关闭,close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。
  • close() 方法允许调用多次。
  • 格式:fileObject.close();

3、写入文件

  • fileObject.write( str ): 用于向文件中写入指定字符串。如果文件打开模式为b ,则要将字符串转换成 bytes 类型的二进制字符串,函数返回成功写入数据的长度
# 以写入文件打开 index.html 文件
file = open('index.html', 'w')
# 写入数据
result1 = file.write('<h1>文件写入标题</h1>')
result2 = file.write('\n')
result3 = file.write('<p>文件写入内容。。。。。。</p>')
print('result1=',result1)# result1= 15
print('result2=',result2)# result2= 1
print('result3=',result3)# result3= 19
# 关闭文件
file.close()
  • fileObject.writelines(seq):用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。
    • 注意:不要被方法名迷惑,如果每个元素独占一行,需要在数据后指定换行符 \n 。
datas = ['AAAAAAAAAAAA\n','BBBBBBBBBBBB\n','CCCCCCCCCCCC\n','DDDDDDDDDDDD\n'] file = open('data.txt','w') result = file.writelines(datas) print('result=',result)# result= None file.close()

4、读取文件

  • fileObject.read(size=-1):用于从文件读取指定的字节数,如果未给定或为负则读取所有
  • 注意光标的位置,连续读取文件没有关闭的时候,光标会随着读取而向后移动,不会回到默认起始位置;
file = open('data.txt','r')
# 读取10个字符
content = file.read(10)
print(content)
# 读取所有内容
content = file.read()
print(content)
file.close()
------------------------------
AAAAAAAAAA
AA
BBBBBBBBBBBB
CCCCCCCCCCCC
DDDDDDDDDDDD
  • fileObject.readline(size=-1): 用于从文件读取整行,包括 \n 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 \n 字符。
  • 该方法默认读取一行,如果指定了长度,会读取这一行中的给定长度,并且如果文件不关闭,光标也不会回到默认起始位置,再次读取会从光标所在位置读取这一行剩下的内容;
file = open('data.txt','r') # 读取10个字符 content = file.readline(10) print(content) # 读取文件指针所在行剩余所有内容 content = file.readline() print(content) file.close() --------------------------------------------- AAAAAAAAAA AA
  • fileObject.readlines():用于读取所有行(直到结束符 EOF)并返回列表
file = open('data.txt','r')
# 以行为单位读取文件所有的内容
contents = file.readlines()
print(contents)
file.close()
--------------------------------------------------
['AAAAAAAAAAAA\n', 'BBBBBBBBBBBB\n', 'CCCCCCCCCCCC\n', 'DDDDDDDDDDDD\n']

5、作业

作业要求

编写一个Python程序,将一些文本内容写入到文件中,并且能够从文件中读取内容并显示出来

''' 作业要求 编写一个Python程序,将一些文本内容写入到文件中,并且能够从文件中读取内容并显示出来 ''' def file_write(filename,msg,mode='a',encoding='utf8'): ''' 文件写入方法,支持写入:字符串和一序列的字符串 :param filename:文件名称 :param msg:写入内容 :param mode:文件打开方式 :param encoding:内容编码 :return: ''' file = open(filename,mode,encoding=encoding) if isinstance(msg,str): # 写入字符串类型 file.write(msg) elif isinstance(msg,list): # 写入序列字符串 file.writelines(msg) else: # 关闭文件 file.close() raise Exception('msg type erroe') # 关闭文件 file.close() def file_read(filename,size=-1,mode='r',encoding='utf8'): ''' 读取文件,支持读取一行或所有 :param filname: 文件名 :param size: -1表示读取所有, :param mode: 文件打开方式 :param encoding: 内容编码 :return: ''' file = open(filename, mode, encoding=encoding) if size == -1: # 读取所有内容 content = file.read() file.close() return content elif size == 1: # 读取一行 content = file.readline() file.close() return content else: # 关闭文件 file.close() raise Exception('size error') if __name__ == '__main__': # 写入文件 filename = 'demo.txt' # msg = '霍格沃兹测试开发学社\n' # file_write(filename,msg) # msg = ['AAAAAAAAAAAA\n','BBBBBBBBBBBB\n','CCCCCCCCCCCC\n','DDDDDDDDDDDD\n'] # file_write(filename, msg) # 读取文件 line = file_read(filename,1) print(line) all = file_read(filename) print(all)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约