Python学习 Part5:输入输出
Python学习 Part5:输入输出
1. 格式化输出
三种输出值的方法:
- 表达式语句
- print()函数
- 使用文件对象的write()方法
两种方式格式化输出:
- 由自己处理整个字符串,通过使用字符串切割和连接操作创建任何想要的输出形式
- 使用str.formate()方法
将值转换为字符串的方法:
- 将它传递给repr()函数
- 将它传递给str()函数

>>> s='Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
>>> str(0.1)
'0.1'
>>> repr(0.1)
'0.1'
>>> x=10*3.25
>>> y=200*200
>>> s='The value of x is '+repr(x)+', and y is '+repr(y)+'...'
>>> print(s)
The value of x is 32.5, and y is 40000...
>>> hello='hello, world\n'
>>> hellos=repr(hello)
>>> print(hellos)
'hello, world\n'
>>> repr((x,y,('spam','eggs')))
"(32.5, 40000, ('spam', 'eggs'))"
>>> str((x,y,('spam','eggs')))
"(32.5, 40000, ('spam', 'eggs'))"
>>>


>>> for x in range(1,11):
print(repr(x).rjust(10),repr(x*x).rjust(3),end=' ')
print(repr(x*x*x).rjust(4)) 1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
>>> for x in range(1,11):
print(repr(x).rjust(2),repr(x*x).rjust(11),end=' ')
print(repr(x*x*x).rjust(4)) 1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
>>>
>>> for x in range(1,11):
print('{0:2d}{1:3d}{2:4d}'.format(x,x*x,x*x*x)) 1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
101001000
>>> for x in range(1,11):
print('{0:2d}{1:10d}{2:4d}'.format(x,x*x,x*x*x)) 1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 1001000
>>>

上面的示例演示了字符串对象的rjust()方法,它通过在字符串左侧填充指定宽度的空格以使其右对齐。还有两个类似的方法:ljust()和center()。如果输入的字符串过长,它们不会截断它,而是原样返回。
还有另一个方法:zfill(),使用零在数字字符串左侧填充(到指定宽度)。它可以理解正负号

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.1415926'.zfill(5)
'3.1415926'
>>>

str.format()方法基本的用法:

>>> print('We are the {0} who say "{1}!"'.format('knights','Ni'))
We are the knights who say "Ni!"
>>> print('{0} and {1}'.format('spam','eggs'))
spam and eggs
>>> print('{1} and {0}'.format('spam','eggs'))
eggs and spam
>>>
>>> #使用关键字参数
>>> print('This {food} is {adjective}.'.format(food='spam',adjective='absolutely horrible'))
This spam is absolutely horrible.

字段名称后面可以跟一个可选的':' 符号和格式化分类符。下面的示例将PI小数后截断为三位
>>> import math
>>> print('The value of PI is approximately {0:.3f}.'.format(math.pi))
The value of PI is approximately 3.142.
通过在':'后面传递一个整数可以限定那个字段的最小字符宽度。

>>> table={'Sjoerd':4127,'Jack':4098,'Dcab':7678}
>>> for name,phone in table.items():
print('{0:10}==>{1:10d}'.format(name,phone))
Dcab ==> 7678
Sjoerd ==> 4127
Jack ==> 4098
>>>

如果有一个不想分割的确实很长的字符串,使用名称替代位置来引用被格式化的变量将会更好:
>>> print('Jack:{0[Jack]:d}; Sjoerd:{0[Sjoerd]:d};''Dcab:{0[Dcab]:d}'.format(table))
Jack:4098; Sjoerd:4127;Dcab:76786736737383863
2. 文件读写
open()函数返回一个文件对象,并且它通常带有两个参数: open(filename,mode)
>>> f=open('/software','w')
第二个参数描述了文件使用的方式(是可选的,默认值是'r'):
- 'r' 文件为只读
- 'w' 文件为只写
- 'a' 表示已追加方式打开文件,所有的数据都会被自动地添加到文件末尾
- 'r+' 表示以读写方式打开文件
文件对象的方法:
- f.read(size)方法:读取一个文件的内容。如果没有指定size或者它为负数,就会读取并返回文件的全部内容。如果已经达到文件尾,f.read()将返回一个空字符串
>>> f=open('/Users/Administrator/Desktop/test.txt','r+')
>>> f.read()
'This is for testing.\nThe second line.\nThe third line.'
>>> f.read()
''
- f.readline()方法:从文件中读取单独一行内容

>>> f=open('/Users/Administrator/Desktop/test.txt','r+')
>>> f.readline()
'This is for testing.\n'
>>> f.readline()
'The second line.\n'
>>> f.readline()
'The third line.'
>>> f.readline()
''

- f.readlines()方法:返回一个包含文件所有数据行的列表
>>> f=open('/Users/Administrator/Desktop/test.txt','r+')
>>> f.readlines()
['This is for testing.\n', 'The second line.\n', 'The third line.']

>>> f=open('/Users/Administrator/Desktop/test.txt','r+')
>>> for line in f:
print(line,end=' ')
This is for testing.
The second line.
The third line.

- f.write(string)方法:将string的内容写入文件,并返回写入字符的长度;如果想要写入其他非字符串内容,首先要将它转换为字符串

>>> f=open('/Users/Administrator/Desktop/test.txt','r+')
>>> value=('the answer',42)
>>> s=str(value)
>>> f.write(s)
18
>>> f=open('/Users/Administrator/Desktop/test.txt','r+')
>>> f.readlines()
["('the answer', 42)"]

- f.tell()方法:返回一个指代文件对象当前位置的整数,表示从文件开头到当前位置的字节数
- f.seek(offset,from_what)方法:改变文件对象位置。新的位置通过将offset值与参考点相加得到,参考点是由参数from_what确定。如果from_what值为0则代表从文件头开始计算,值为1时代表从当前文件位置开始计算,值为2时代表从文件尾开始计算,省略时默认为0.

>>> f=open('/Users/Administrator/Desktop/test.txt','r+')
>>> f.write('0123456789abcdef')
16
>>> f.seek(5)
5
>>> f.read(1)
'5'
>>> f.seek(-3,2)
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
f.seek(-3,2)
io.UnsupportedOperation: can't do nonzero end-relative seeks
>>>

在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常。

>>> f=open('/Users/Administrator/Desktop/test.txt','rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(-3,2)
13
>>> f.read(1)
b'd'
>>>

- f.close()方法:关闭文件并释放其占用的所有系统资源
- 在处理文件对象时,使用with关键字是个好习惯。在文件一系列操作后它会被适当的关闭

>>> with open('/Users/Administrator/Desktop/test.txt','r') as f:
read_data=f.read()
>>> read_data
'0123456789abcdef'
>>> f.closed
True

pickle模块:
将任何Python对象转换为字符串表示形式,这个过程称为pickling(封装),从这个字符串表示形式中重建Python对象被称为unpickling(拆封)
如果你有一个对象x和一个已经打开并等待写入的文件对象f,封装对象的最简单方法只需要一行代码:
>>> pickle.dump(x,f)
想要拆封这个对象,如果存在一个已经打开并等待读取的文件对象f,即可:
>>> x=pickle.load(f)
Python学习 Part5:输入输出的更多相关文章
- Python学习之输入输出入门 A+B篇
描述 求两个整数之和. 输入 输入数据只包括两个整数A和B. 输出 两个整数的和. 样例输入 1 2 样例输出 3 a=input().split() print(int(a[0])+int(a[1 ...
- Python学习之输入输出、数据类型
#coding=utf-8 # 输入 print'100+200=',100+200 # 输入 # name = raw_input('tell me your name:') # print'hel ...
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
- Python学习---Python安装与基础1205
1.0. 安装 1.1.1. 下载 官网下载地址:https://www.python.org/downloads/release/python-352/ 1.1.2. 配置环境变量 因为在安装的时候 ...
- Python学习(二)Python 简介
Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...
- 第1章 Python学习环境构建目录
第1章 引子 第1.1节 学习环境搭建 第1.2节 Python学习环境的使用 第2章 Python编程基础知识 第2.1节 简单的Python数据类型.变量赋值及输入输出 第2.2节 Python的 ...
- Python 学习笔记(上)
Python 学习笔记(上) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(上) 基础知识 基本输入输出 模 ...
- Python学习的十个阶段,学完神功大成,对应一下看看你自己在哪个阶段
大家好,我是白云. 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. 阶段一:Python基础[ 初入江湖] Linux基础 目标: ...
随机推荐
- 让你的动画不再生硬 Android插值器Interpolator使用秘籍
有木有厌烦生硬的动画效果,想不想让你的动画变得圆滑且 欢迎收看本期的走进科学... 停,停,别打了,(.﹏.*) 我错了-- 我们要达到的效果: 先来回顾一下普通动画的用法吧. * 缩放动画 Scal ...
- 轻量级网络库libevent初探
本文是关于libevent库第一篇博文,主要由例子来说明如何利用该库.后续博文再深入研究该库原理. libevent库简介 就如libevent官网上所写的“libevent - an event n ...
- 如何解决Asp.Net中不能上传压缩文件的问题
在使用Asp.Net自带的服务器端控件Fileupload上传文件时,可能会出现不能上传压缩文件的问题,此时可以通过下面的方法解决: 在<system.web>中添加: <httpR ...
- saiku查询出错如何debug(saiku查询过程的本质),以及相关workbench的schema设置
saiku连接infiniDB数据库 1,日期维度无结果. 原因:(数据库表内容出错) 表最后一列(日期字段)匹配出错,用"like %日期%"可以.说明入库时写入多余的空白符,因 ...
- myBatis源码之XMLConfigBuilder
XMLConfigBuilder是对mybatis的配置文件进行解析的类,会对myabtis解析后的信息存放在Configuration对象中,Configuration对象会贯穿整个mybatis的 ...
- 如何编写 PL/SQL 程序
本文的操作选用的数据库是oracle 数据库,登陆的用户是自带的scott用户,默认密码:tiger,有不懂得可以相互讨论一下,谢谢. 首先需要了解PL/SQL块的结构,PL/SQL块由定义部门.执行 ...
- break和continue的简单介绍
1.break break 用于完全结束一个循环,跳出循环体!不管是哪种循环,如果在程序中遇到Break,系统将完全结束该循环,开始执行循环之后的代码: public class TestBreak ...
- 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书
一.选题报告 目录 团队名称 团队成员 项目名称 项目描述 创新与收益 用户场景分析 真实用户调研 未来市场与竞争 项目导图 比例权重 总结 1.团队名称--指南者团队 2.团队成员 孔潭活:2015 ...
- box-sizing属性(指定针对元素的宽度与高度的计算方法)
在css中,使用width属性与height属性来指定元素的宽度与高度.使用box-sizing属性,可以指定用width属性与height属性分别指定的宽度值与高度值是否包含元素的内部补白区域与边框 ...
- CALayer简介
一.什么是CALayer * 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. * 其实UIView之所以 ...