`
yuanta11
  • 浏览: 60788 次
  • 性别: Icon_minigender_1
  • 来自: 淄博
社区版块
存档分类
最新评论

Python第五课-将写入文件的列表格式化

阅读更多
1、上节课代码中的问题

第四课中介绍了python持久化的基础实例——将数据写入文本文件。
可当我们试着把保存数据的文件读取出来会怎样呢?
try:
    with open('man.txt', 'r') as fman:
        print(fman.readline())
except IOError as err:
    print(str(err))

执行时,返回一大...串儿字符串。里边包含了man.txt文件中的所有数据。
这种未被格式化的存储方式基本上是没什么用的!除非你把整个文件当一个字符串读出来,然后再去想各种办法解析...


2、把即将写入文本文件的数据格式化:

当然我们可以写出新的代码来实现数据格式化。
可第二课中我们曾经创建过一个nester模块,里边的print_lol函数就是用来格式化列表的。为什么不把它改造一个直接拿来使用呢?不要重复造轮子嘛...OOP吧!

改造print_lol函数(原代码在第二课中):
'''''模块名:nester 
其中包含一个函数:print_lol 用于输出一个可能嵌套有其他列表的列表'''  
  
def print_lol(the_list, level=0, d='\t', indent=False, file_name=sys.stdout):
    '''''函数print_lol, 使用递归的方式输出一个可能嵌套有其他列表的列表 
    参数the_list, 是需要输出的列表 
    参数level, 是整形,表示缩进级别,默认值为0 
    参数d, 是字符串,表示缩进符号,默认值为制表符 
    参数indent, 是一个布尔值,表示是否进行缩进,默认为否
    参数file_name, 为需要写入的文件名,默认为不写入任何文件直接输出'''  
  
    for each_item in the_list:  
        if isinstance(each_item, list):  
            print_lol(each_item, level+1, file_name)  
        else:  
            if indent:
                for tab_stop in range(level):
                    print(d, end = '', file = file_name)  
        print(each_item, file = file_name)


改造写入文件的代码块(原代码在第四课中):
'''使用新的print_lol函数来取代print() 这个BIF'''

import nester

man = [] 
other = []

try:
    data = open('sketch.txt')
    try:
        for each_line in data:
            (role, line_spoken) = each_line.split(':', 1)
            line_spoken = line_spoken.strip()
            if role == 'man':
                man.append(line_spoken)
            else:
                other.append(line_spoken)
    except ValueError:
        pass
    data.close()
except IOError as ioerr:
    print('File Error :' + str(ioerr))

try:
    with open('man_data.txt', 'w') as man_file, open('other_data.txt', 'w') as other_file:
        nester.print_lol(man, file_name = man_file) #把此处的print BIF改为带有格式化列表和写入文件功能的pring_lol函数
        nester.print_lol(other, file_name = other_file)
except IOError as ioerr:
    print('File Error: ' + str(ioerr))

如此便可以利用现有的print_lol函数,实现把格式化后的列表写入文本文件。
0
1
分享到:
评论

相关推荐

    python-xlwt用法.docx

    Python xlwt库提供了一些功能,如创建工作簿、工作表、单元格、格式化单元格等。在本文中,我们将介绍Python xlwt库的用法。 安装Python xlwt库 在使用Python xlwt库之前,需要先安装它。可以使用pip命令来安装...

    python图片预处理基本操作之——批量重命名,修改格式,统一大小,保存为其他路径,灰度化,归一化并将BGR写入txt

    对图片进行归一化处理,并将每个像素点的BGR保存在txt文件里 版本:python3.8 运行:PyCharm2019 下面开始详细讲解喽: 第一步: 分别批量重命名文件夹中的图片名称,并将.bmp格式的图片修改为.jpg格式。 下图是从...

    Python Cookbook

    2.11 将文件树归档到一个压缩的tar文件 76 2.12 将二进制数据发送到Windows的标准输出 77 2.13 使用C++的类iostream语法 78 2.14 回退输入文件到起点 80 2.15 用类文件对象适配真实文件对象 83 2.16 遍历目录树...

    老男孩python 四期

    第五天 1、Socket 介绍 2、Python socket 语法 3、简单的socket 交互程序 4、Socket Server的开发与使用 5、多线程非阻塞并发自处理 6、练习程序:用SOCKET模拟实现SSH客户端功能 6、项目实战二、开发FTP服务器\...

    颜色分类leetcode-applied-python-machine-learning-book:应用Python机器学习书籍

    模块,用于读取、写入和可视化各种格式的图像 Scikit-图像恢复模块去除医学影像噪声 Scikit-image 颜色模块通过颜色解卷积方法分离免疫组织化学染色的颜色 用于 X 射线图像分割的 Scikit 图像特征模块 用于直方图...

    python cookbook(第3版)

    5.18 将文件描述符包装成文件对象 5.19 创建临时文件和文件夹 5.20 与串行端口的数据通信 5.21 序列化Python对象 第六章:数据编码和处理 6.1 读写CSV数据 6.2 读写JSON数据 6.3 解析简单的XML数据 6.4 ...

    python计算机视觉编程

    第5章 多视图几何 5.1 外极几何 5.1.1 一个简单的数据集 5.1.2 用matplotlib绘制三维数据 5.1.3 计算f:八点法 5.1.4 外极点和外极线 5.2 照相机和三维结构的计算 5.2.1 三角剖分 5.2.2 由三维点...

    dive into python

    8.6. 基于 dictionary 的字符串格式化 8.7. 给属性值加引号 8.8. dialect.py 介绍 8.9. 全部放在一起 8.10. 小结 9. XML 处理 9.1. 概览 9.2. 包 9.3. XML 解析 9.4. Unicode 9.5. 搜索元素 9.6. 访问元素...

    真实世界的Python仪器监控 数据采集与控制系统自动化

    《真实世界的Python仪器监控:数据采集与控制系统自动化》是2013年 出版的图书,作者是休斯。ISBN 978-7-121-18659-2 本书主要帮助读者了解如何通过自行开发应用程序来监视或者控制仪器硬件。本书内容涵盖了从接线到...

    易化的Python-易语言

    取文件大小文件_取最近访问时间文件_取创建时间文件_取修改时间文件_取文件目录文件_取路径文件名文件_文件扩展名分割文件_目录文件名分割文件_创建文件文件_检测权限文件_写入文件文件_读取文件文件_读取某行数据_...

    Python基础教程(第3版)-201802出版-文字版

    久负盛名的 Python 入门经典针对 Python 3 全新升级十个出色的项目,让你尽快可以使用 Python 解决实际问题目录第 1章 快速上手:基础知识 ........................ 1 1.1 交互式解释器 .............................

    生产服务器部署规范.docx

    Pam_passwdqc 可插入的口令强健性控制模块 Readahead 将文件预置列表写入内存 Redhat-lsb LSB支持 red hed linux Rng-utlls 随机数字生产程序相关的工具 Rsh 客户机远程访问命令 Rsync 一个在网络中同步文件的程序 ...

    tengge py for s60编程教程

    8.6%格式化输出 8.7取得时间日期 8.8其他技术介绍 8.9.后台信息提示 9.0.字体和模式字体 9.1.文本界面其他函数 9.2.焦点控制 9.3.设定程序风格 9.4.从系统打开文件 9.5.置顶信息显示 9.6.简易照相机 9.7.遍历文件 ...

    Hadoop权威指南 第二版(中文版)

    第5章 MapReduce应用开发  配置API  合并多个源文件  可变的扩展  配置开发环境  配置管理  辅助类GenericOptionsParser,Tool和ToolRunner  编写单元测试  mapper  reducer  本地运行测试数据  在本地...

    Hadoop权威指南(中文版)2015上传.rar

    第5章 MapReduce应用开发 配置API 合并多个源文件 可变的扩展 配置开发环境 配置管理 辅助类GenericOptionsParser,Tool和ToolRunner 编写单元测试 mapper reducer 本地运行测试数据 在本地作业运行器上运行作业 ...

    binpickle:二元酸洗库

    BinPickle-高效的二进制腌制数据 该软件包使用Python 3.8中的新Pickle Protocol 5(或其pickle5 )来有效地将大型对象(尤其是科学的Python软件包)序列化为磁盘格式。 此格式旨在支持两个用例: 以可映射内存的格式...

    MySQL 5.1官方简体中文参考手册

    10.8. 新字符集配置文件格式 http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/(第 9/24 页)2006-11-02 19:12:13 MySQL 5.1 Reference Manual 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的...

    MySQL5.1参考手册官方简体中文版

    10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6....

Global site tag (gtag.js) - Google Analytics