python中print又可将数据写入文件_Python第五课-将写入文件的列表格式化

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

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函数,实现把格式化后的列表写入文本文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 依赖注入的实现

依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念。 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的实例(例如,使用 new…

arduino倾斜开关python语言_Arduino小白的学习记录:倾斜开关实验

一、介绍带有金属球的球形倾斜开关,它用于检测小角度的倾斜。图7.1 倾斜开关模块二、材料准备Arduino Uno 主板*1USB数据线*1倾斜开关模块*1杜邦线若干三、实验原理在倾斜开关中小球以不同的倾斜角度移动以造成触发电路的原理。倾斜开关模块使用双向传导的球形倾斜开…

Spring Bean的配置及常用属性

作为 Spring 核心机制的依赖注入,改变了传统的编程习惯,对组件的实例化不再由应用程序完成,转而交由 Spring 容器完成,在需要时注入应用程序中,从而对组件之间依赖关系进行了解耦。这一切都离不开 Spring 配置文件中使…

java 静态对象语法_04.Java 语法

计算机基础知识表达式(expression):Java中最基本的一个运算。比如一个加法运算表达式。12是一个表达式,ab也是。计算机内存的最小存储单元是字节(byte),一个字节就是一个8位二进制数,即8个bit。它的二进制表示范围从00000000~1111…

python 化学模块_Python chemif包_程序模块 - PyPI - Python中文网

实施解决这个问题的方法是使用一个while循环的递归下降算法。这个循环的基本结构是:todo [[item1, processing_data],[item2, processing_data], ... ]done []while len(todo)>0:item_to_workon todo.pop()for each_branch in branches:stuff.do()data.proces…

Spring实例化Bean

在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象。在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化、静态工厂方式实例化和实例工厂方式实例化。 构造器实例化 构造器实例化是指 Spring 容器通…

centos7配置mysql其他机器访问_CentOS7安装MySQL并开启远程访问详解

1.安装MySQLCentOS7中默认安装了MySQL系列的数据库,需要先卸载掉。查看当前安装的mariadb包:[[email protected] desktop]# rpm -qa | grep mariadb将它们统统强制性卸载掉:[[email protected] 桌面]# rpm -e --nodeps mariadb-libs-5.5.35-3…

python单元测试框架unittest介绍和使用_Python单元测试框架unittest简明使用实例

测试步骤1. 导入unittest模块import unittest2. 编写测试的类继承unittest.TestCaseclass Tester(unittest.TestCase)3. 编写测试的方法必须以test开头def test_add(self)def test_sub(self)4.使用TestCase class提供的方法测试功能点5.调用unittest.main()方法运行所有以test开…

python堆模块_python内置堆模块

heapqpython内置heapq模块,通过import heapq导入。heapq模块是用于堆实现优先队列。我们知道队列是先进先出(FIFO),heapq中的优先队列指的是不论谁先进,最小的先出或者最大的先出。# 需要注意的是heapq的堆是小根堆。01 23 4 5 67 8 9 10 11 …

Java连接数据库所遇到的坑,连接数据库,遇到一个很奇怪的问题……

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个程序,运行之后发现成功连接上了然后我又看一眼,发现 DatabasName 拼错了,少写了一个 e没想到改正后反而报错了!com.microsoft.sqlserver.jdbc.SQLServerException: Cannot open d…

如何用python的i2c教程_Micropython TPYBoard I2C的用法

先看看基本用法:from pyb import I2Ci2c I2C(1) # create on bus 1i2c I2C(1, I2C.MASTER) # create and init as a masteri2c.init(I2C.MASTER, baudrate20000) # init as a masteri2c.init(I2C.SLAVE, addr0x42) # i…

Spring基于XML装配Bean

Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配、基于 Annotation 的 Bean 装配和自动装配等。 Spring 基于 XML 的装配通常采用两种实现方式&…

苹果php环境,苹果电脑安装PHP环境步骤-PHP问题

苹果电脑装置PHP环境步骤:一、起首咱们需求装置Homebrew二、终端输出饬令// 创立目次,假如你不创立过该目次sudo mkdir /usr/local/varsudo chmod 777 /usr/local/var//修正成你本人的用户名以及组,假如你不创立过该目次sudo mkdir /usr/local/sbin/sudo chown -R :…

python邮件图片加密软件_用Python发一封图文并茂的邮件

最近使用了不少通讯工具的接口, 比如企业微信机器人,钉钉,微信公众号的接口(未认证的订阅公众号),相对于邮件来说,它们的表现形式太弱。比如没有更丰富的版本方式。当然了,并不是说表现形式越棒就是约好的通知手段&…

Spring基于Annotation装配Bean

在 Spring 中,尽管使用 XML 配置文件可以实现 Bean 的装配工作,但如果应用中 Bean 的数量较多,会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。 Java 从 JDK 5.0 以后,提供了 Annotation(注…

用java写米与英尺,JAVA 英制变换(英尺与英寸)

JAVA 英制转换(英尺与英寸)系统实际业务中,还有些外国船舶水尺用的英制计算单位。写了一个简单的 英尺与英寸的转换 。英尺 --> 英寸 的转换:public class FeetToInch {/*** param args*/public static void main(String[] args) {String aa FeetTo…

swiper鼠标hover停止自动轮播_swiper滑块组件

相信大家在平常购物的时候都会看到轮播图,轮播图里面播放的是热门商品的信息。在小程序里面我们可以通过swiper滑动视图容器组件来实现,让我们一起来看下swiper组件都有哪些属性:我们看到可以通过一些属性给视图容器增加一些指示点&#xff0…

Spring自动装配Bean

除了使用 XML 和 Annotation 的方式装配 Bean 以外,还有一种常用的装配方式——自动装配。自动装配就是指 Spring 容器可以自动装配(autowire)相互协作的 Bean 之间的关联关系,将一个 Bean 注入其他 Bean 的 Property 中。 要使用…

Spring AOP是什么?

面向切面编程(AOP)和面向对象编程(OOP)类似,也是一种编程模式。Spring AOP 是基于 AOP 编程模式的一个框架,它的使用有效减少了系统间的重复代码,达到了模块间的松耦合目的。 AOP 的全称是“As…

java算法概述,Java数据结构与算法基础(一)概述与线性结构

Java数据结构与算法基础(二)递归算法Java数据结构与算法基础(一)概述与线性结构学习目的:为了能更顺畅的读很多底层API代码和拓宽解决问题的思路一、数据结构概述1.数据结构是什么?数据与数据之间的关系2.数据结构的分类:存储结构分类&#x…