美文网首页
文本文件读写

文本文件读写

作者: 无尽的结 | 来源:发表于2019-01-17 19:28 被阅读0次

    一、文件的打开

    1.普通文件:数据持久化的最简单类型,仅仅在一个文件名下的字节流(流的意思是按照顺序一个字节以个字节访问),把数据从文件读入内存,从内存写入文件
    1.1 open()函数:基本语法如下图:
    f = open(filename[,mode[,buffering]])#带有三个参数第一个是文件名,第二个mode意思是访问模式对指定的文件要进行说明操作的意思,第三个参数是缓冲一般默认缺省为-1就可以了
    f:open()返回文件对象
    filename:文件的字符串名
    mode:可选参数,打开模式和文件类型
    
    mode参数第一个字母表明对其的操作如下图:
    r:表示读模式 #表示从文件中把数据读出来
    w:表示写模式 #把内存当中的一些数据写到外层的文件当中
    x:表示在文件不存在的情况下新创建并写文件
    a:表示在文件末尾追加写内容
    +:表示读写模式,可以在读写之间来回切换
    
    mode参数第二个字母表明对其的操作如下图:
    t:表示文本类型
    b:表示二进制文件
    

    二、文件的读写和访问

    1.文件的写操作如下图:
    f.write(str)  #写一个字符串到文件中
    f.writelines(strlist)  #写入字符串列表
    
    2.文件的读操作如下图:
    f.read() #如果不加任何参数它会把整个文件的所有内容都读到内存中
    f.readline():返回一行(一行读完以后文件位置的指针会自动跳到下一行,如下次再调用readline就会把下一行读出来,一直读到文件结束)
    f.readlines():返回所有行列并且把它放在列表当中去,列表当中的每一个元素就是一行
    
    对文件的操作举个例子如下图:
    >>> f = open('my.txt','w') #以w的形式把my.txt文件打开
    >>> f.writelines(['apple\n','pie\n']) #在文件中写入两行字符串,python的writelines并不自动添加换行,所有需要在每行后面加一个换行符
    >>> f.close() #关闭文件
    >>> f=open('my.txt','r') #以r的形式把my.txt文件打开
    >>> f.readlines() #把所以的行列读入内存中
    ['apple\n', 'pie\n'] #以列表的形式返回包括换行符也被保存下了,列表中的每一个元素都是一行,
    >>> f.close()#关闭文件
    

    三、文件的关闭

    1.打开文件要记得关闭,关闭的作用是终止对外部文件的连接,同时将缓存区的数据刷新到硬盘上
    2.文件的关闭直接调用(f.close)就可以了
    3.使用上下文管理器(context manager),确保在退出后自动关闭文件如下图所示:
    with open('textfile','rt') as myfile:       #使用上下文管理器这里需要用with这个关键字,打开这个文件并对这个文件重新命名为myfile
          myfile.read()
          ...
          ...
          ...
    在myfile后面有一个冒号所以后面的语句都需要缩进,而这些在with下面的语句不管对它做什么样的操作,最后它都会自动关闭文件
    

    四、结构化文本文件:(csv)

    1.c表示逗号的意思s表示分隔符v表示值的意思,即csv文件是以纯文本文件的形式出现的以逗号分隔的文本文件。这里有几点注意如下图:
    csv文件值没有类型,所有值都是字符串
    不能指定字体颜色等样式
    不能指定单元格的宽高,不能合并单元格
    没有多个工作表
    不能嵌入图像图表
    
    2.对csv文件的基本操作语法如下图:

    图1、读的操作reader、DictReader,这里的DictReader是对带有表头文件的读取

    import csv #首先调用csv这个模块
    re = csv.reader() #reader可以接受一个可迭代对象(比如csv文件),能返回一个生成器,可以从中解析出内容。
    
    
    import csv
    re = csv.DictReader()
    #使用方式与reader类似,也是有一个生成器可以逐行去访问,但返回的每一个单元格都放在一个元组的值内
    
    

    图2、写的操作

    import  csv
    w = csv.writer() #当文件不存在时,自动生成,支持单行写入和多行写入
    w.witerow(rows)
    
    
    w = csv.Dictwriter() #以字典数据写入
    w.writeheader()
    w.writerow(rows)
    

    图3、实例如下图

    import csv
    with open('test1.csv','w',newline='') as f:    #以写的方式打开test1.csv文件并重命名为f,newline='是为了去空格
        w = csv.writer(f)
        w.writerow(('name', 'tel', 'address', 'age')) #写入内容
        w.writerow(('zhang', 15111111111, 'beijing', 33))
        w.writerow(('li', 13822222222, 'wuhan', 28))
        w.writerow(('liu', 15933333333, 'hainan', 25))
        w.writerow(('rows',1110))
    with open('test1.csv','r',newline='') as f: #以读的方式打开文件
        reader = csv.reader(f)
        for i in reader:                        #读取文件内容
            print(i)
    

    输出

    F:\j\venv\Scripts\python.exe F:/j/demo22.py
    ['name', 'tel', 'address', 'age']
    ['zhang', '15111111111', 'beijing', '33']
    ['li', '13822222222', 'wuhan', '28']
    ['liu', '15933333333', 'hainan', '25']
    ['rows', '1110']
    Process finished with exit code 0
    

    五、结构化文本文件:Excel

    1.openpyxl模块:该模块可以用来读写扩展名为xlsx/xlsm/xltx/xltm的文件

    workbook类是对工作簿的抽象
    worksheet类是对表格的抽象
    cell类是对单元格的抽象文件写操作

    2.操作之前先导入第三方库

    安装:pip install openpyx1
    导库:from openpyxl import workbook

    3.创建Excel文件

    一个workbook对象代表一个excel文档,使用该方法创建一个worksheet对象后才能打开一个表,基本语法如下图:

    form openpyxl import workbook
    wb = workbook()
    ws = wb.active
    
    4.读取excel文件基本语法如下图:
    from openpyxl import load_workbook
    wb = load_workbook(filename)
    ws = wb.file.active
    
    5.获取单元格的信息基本语法如下图:
    1.获取Cell对象
    c = wb['sheet'] ['A1']
    c = wb['sheet'].cell(row=1,column=1)
    #获取Cell对象之后可以获取坐标和单元格的值
    c.coordinate:返回单元格坐标
    c.value:返回单元格的值
    c.column:返回单元格所在列坐标
    

    六、结构化文本文件:PDF

    1.处理pdf文件的库:pyPDF2

    pyPDF2包含了pdfFileReader、pdfFileMerger、pageobject和pdfFileWriter四个主要类,可以对PDF文件进行读写、分割、合并、文件转换等多种操作,但是只能从PDF文档中提取文本并返回为字符串,而无法提取图像、图表或其他媒体

    2.读取PDF文件基本语法如下图:
    readFile = open('test.pdf','rb') #用open打开获得一个文件对象readFile
    pdfFileReader = pdfFileReader (readFile)#用pdfFileReader这个类处理这个文件对象再返回给pdfFileReader
    
    3.pdfFileReader类

    getNumpages():计算PDF文件总页数
    getpage(index):检索指定编号的页面

    4.PDF文件的写操作基本语法如下图:
    writeFile = 'output.pdf'
    pdfFileWriter = pdfFileWriter()
    
    5.pdfFileWriter类

    .addpage(pageobj):根据每页返回的pageobject,写入到文件

    6.合并多个文档基本语法如下图:
    pdf_merger = pdfFileMerger()
    pdf_merger.append('py2018.pdf')
    pdf_merger.merge(10,'insert.pdf')
    pdf_merger.write('merge.pdf')
    
    7.单个页面操作:pageobject类

    .extractText():按照顺序提取文本
    .getContents():访问页面内容
    .rotateClockwise(angle):顺时针旋转
    .scale(sx,sy):改变页面大小

    这节内容举例不多,写的不够完善后续再完善不全

    相关文章

      网友评论

          本文标题:文本文件读写

          本文链接:https://www.haomeiwen.com/subject/yshmdqtx.html