导读:计算机程序用于执行任务,是满足人类需求的工具。有信息的输入,程序才能接收指令、理解需求;有信息的输出,运行结果才能被反馈给用户。在编程中,信息输入操作称为Input,输出操作称为Output,统称为Input/Output,简写为I/O。

相比其他语言,Python中的I/O操作更加简单方便,通过简单的指令就可以实现基本的输入输出。此外,I/O并不仅仅指信息键入和打印信息,还包括文件的输入输出。

作者:李明江 张良均 周东平 张尚佳

来源:大数据DT(ID:hzdashuju)

01 input与print

1. input

input函数在用于交互式的信息键入时,相当于一个容器,用户从键盘输入的信息先存放在容器中,再被变量引用。

input函数可以接纳多种数据类型,包括number、str等基础类型,及list、tuple、dict、set等复合类型。使用input函数时,可以在括号内添加str以提示输入。需要注意的是,Python 3.x中的input函数将所有接收的数据都默认为str,如下所示。

  • 输入不同数据类型

# 输入一个数字,由Python默认类型
number1 = input('请输入一个数字:')

输出结果:

请输入一个数字:1
# 输入一个str,由Python默认类型
str1 = input('请输入一个字符串:')

输出结果:

请输入一个字符串:1
# 输入一个数字,并将其转换为int类型
number2 = int(input('请输入一个数字:'))

输出结果:

请输入一个数字:123
# 查看以上输入的输出结果类型
print('number1、str1和number2的类型分别为:\n',type(number1), type(str1), type(number2))

输出结果:

number1、str1和number2的类型分别为:
<class 'str'> <class 'str'> <class 'int'>

从输出结果可知,在str1变量中,尽管输入的不是str,也被默认为str。要得到需要的数据类型,必须做类型转换。

2. print

给一个变量赋值后,如需查询变量的内容,只需要键入变量名并按回车键即可,称为表达式语句的输出。使用print函数是更受欢迎的输出方式,可以实现多样化的输出操作。

使用print函数进行输出操作时,可以在函数的括号中插入str以向屏幕上输出指定的文字,比如打印“hello,world!”的程序;要输出被赋值的变量,则在print函数的括号中插入变量名即可。

print函数也可以接收多个str,需要用逗号隔开,print函数会依次打印每个str,遇到逗号则输出一个空格,因此输出的str是拼起来的。print函数也可以自动计算结果,运行“print(number1+number2)”语句,解释器会自动计算出相加的结果后输出。print函数的应用代码如下所示。

  • print函数应用

# print函数接收多个str
print('我', '爱', '中华')

输出结果:

我 爱 中华
# print函数在打印前计算结果
print('100+200 =', 100 + 200)

输出结果:

100+200 = 300

格式化输出是计算机输出中的一个重要概念,主要针对str。其运行机制为:使用占位符在str中进行占位,再用数值或字符替换占位符,重组str后输出。

这种输出方法主要是为了方便修改语句,减少编写代码的工作量,并且包含自动取位、转换进制等功能。Python中的格式化输出方法有两种,即“%+格式符”的方法和format函数方法。

“%+格式符”的方法是一种较早的格式化输出方法,使用方式是在百分号(%)后加上相应的格式符以占位,再进行替换和输出。Python中的格式符如下所示。

  • Python格式符

  • str

  • %s:字符串(采用str函数的显示)

  • %r:字符串(采用repr函数的显示)

  • %c:单个字符

  • 整数

  • %b:二进制整数

  • %d:十进制整数

  • %i:十进制整数

  • %o:八进制整数

  • %x:十六进制整数

  • float

  • %e:指数(基底写为e)

  • %E:指数(基底写为E)

  • %f:浮点数

  • %F:浮点数

  • %g:指数(e)或浮点数(根据显示长度)

由此可知,Python中的格式符可分别用于str、整数和float输出。使用“%+格式符”的方法进行格式化输出,如下所示。

  • “%+格式符”格式化输出

# 用%s、%d分别格式化字符串'Zara'和整数20
print("我的名字叫作%s,已经%d岁了!"%('Zara',20))

输出结果:

我的名字叫作Zara,已经20岁了!
# 用%d格式化16,用%o将十进制整数16用八进制数表示
print("%d 的八进制是 %o"%(16,16))

输出结果:

16 的八进制是 20
# 用%.3f将整数转化为保留小数点后3位的float
print("23 转化为保留3位小数的浮点数%.3f"%(23))

输出结果:

23转化为保留3位小数的浮点数23.000

format函数是更为强大的格式化输出工具,format函数收集位置参数和关键字参数的任意集合,使用它们的值替换str中的占位符。该方法使用大括号({})作为特殊字符代替%,{}中可以不带参数、带数字编号或带关键字编号进行占位和替换,前两种属于位置替换方法,后一种属于关键字替换方法。

format函数也支持格式符,如下所示。

  • format函数格式符

  • 'c':字符。打印前将整数转换成对应的Unicode字符串

  • 'b':二进制。将数字以2为基数进行输出

  • 'o':八进制。将数字以8为基数进行输出

  • 'd':十进制。将数字以10为基数进行输出

  • 'x':十六进制。将数字以16为基数进行输出,9以上的位数用小写字母表示

  • 'e':幂符号。用科学计数法打印数字。用'e'表示幂

  • 'g':一般格式。将数值以fixed-point格式输出,数值特别大时用幂形式打印

  • 'n':数字。值为整数则等效于'd',为float则等效于'g'。

  • '%':百分数。数值乘以100后以fixed-point('f')格式打印,值后有一个百分号

使用format函数进行格式化输出的基本操作,如下所示。

  • format函数格式化输出

# format函数不带参数情况下的输出
print("我的名字叫作{},已经{}岁了!".format('Zara', 18))

输出结果:

我的名字叫作Zara,已经20岁了!
# format函数带数字编号并打乱顺序
print("我的名字叫作{1},已经{0}岁了!".format(18, 'Zara'))

输出结果:

我的名字叫作Zara,已经20岁了!
# foemat函数带关键字参数
print("我的名字叫作{name},已经{age}岁了!".format(age=18,name='Zara'))

输出结果:

我的名字叫作Zara,已经20岁了!
# format函数格式化数字为二进制数
print("我的名字叫作{},已经{:b}岁了!".format('Zara', 18))

输出结果:

我的名字叫作Zara,已经10010岁了!

02 文件I/O

1. open

内置函数open的作用是打开一个文件,创建一个file对象以进行调用。在打开文件的基础上,后续的文件读写操作才可以实现。open函数的基本语法格式如下:

open(filename, mode)

open函数常用的参数及其说明如下所示。

  • open函数常用的参数及其说明

  • filename:接收文件名,表示文件名称。无默认值

  • mode:接收模式名,表示文件打开模式。默认为只读

filename表示包含要访问的文件名称。mode决定打开文件的模式,这个参数是非强制的,默认的文件访问模式为只读(r),其可取值如下所示。

  • 文件访问模式及其说明

  • r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式

  • rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式

  • r+:打开一个文件用于读写。文件指针将会放在文件的开头

  • rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头

  • w:打开一个文件只用于写入。如果该文件已存在则将其覆盖;如果该文件不存在,则创建新文件

  • wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖;如果该文件不存在,则创建新文件

  • w+:打开一个文件用于读写。如果该文件已存在则将其覆盖;如果该文件不存在,则创建新文件

  • wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖;如果该文件不存在,则创建新文件

  • a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写到已有内容之后;如果该文件不存在,则创建新文件进行写入

  • ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写到已有内容之后;如果该文件不存在,则创建新文件进行写入

  • a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾,文件打开时会是追加模式;如果该文件不存在,则创建新文件用于读写

  • ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾;如果该文件不存在,则创建新文件用于读写

2. read

在Python中,读取文件的内容需要以只读的模式先打开一个文件,可以用open函数传入文件名和模式标识符,再用read函数读取文件中的内容。read函数可以从打开的文件中一次性读取全部内容,内容被读取到内存并用一个str对象表示。read函数的基本语法格式如下:

f = open(filename, mode)
f.read(size)

read函数常用的参数及其说明如下所示。

  • read函数常用的参数及其说明

  • size:接收number,表示读取的字符数。默认为文件中所有字符

size表示要从文件中读取的字节数,该方法从文件的开头开始读入,每调用一次就读取size个字节的内容。如果没有传入size,程序会尝试尽可能多地读取内容,一直到文件的末尾。

使用read函数读取test.txt文件,并打印,如下所示。

  • read函数读取test.txt文件

# 以只读模式打开test.txt文件
data = open('../data/test.txt', 'r')
# 读取文件中的内容,存到content变量中
content = data.read()
# 打印出content变量中包含的文本内容
print('该文本中的内容是:', content)

输出结果:

该文本中的内容是:Hello World!

3. write

在Python中,写入文件和读出文件的操作方式是相似的:先调用open函数并传入标识符‘w’或‘wb’,再使用write函数进行写入。write函数的基本语法格式如下:

f = open(filename, mode)
f.write(str)

write函数常用的参数及其说明如下所示。

  • write函数常用的参数及其说明

  • str:接收任意str,表示写入的文本内容。默认为空

write函数可将任何str写入打开的文件。需要注意,Python中的str可以是二进制数据,而不限于文字。要写入str以外的内容,要先将需写入的内容转换成str。

使用write函数写入文件的操作如下所示。

  • write函数写入文件

# 打开一个文件
web = open('../tmp/web.txt', 'w')
# 转换内容,写入文件
value = ('http://www.tipdm.org', 14)
str_value = str(value)
web.write(str_value)
web.close()
# 打开文本,读取出写入的内容
web = open('../tmp/web.txt', 'r')
content = web.read()
print('该文本中的内容是:', content)

输出结果:

该文本中的内容是: ('http://www.tipdm.org', 14)

4. close

close函数可以刷新缓存里任何还没写入的信息并关闭文件,关闭之后的文件便不能再进行写入。使用完文件后应该关闭,关闭文件的本质是使文件指针与文件脱离,关闭后不再能通过该指针对原来与其联系的文件进行操作。

如果文件使用完后不关闭,文件对象会一直占用操作系统的资源,并且,操作系统同一时间能打开的文件数量是有限的。写入文件时,数据会占用操作系统的内存,待计算机空闲时再慢慢写入,不调用close函数的后果是数据可能只写一部分到磁盘中,其他的信息则丢失了。

close函数的基本语法格式如下:

fileObject.close()

close函数常用的参数及其说明如下所示。

  • close函数常用的参数及其说明

  • fileObject:接收文件名,表示正在使用的文件对象。无默认值

本文代码中,都需要在末尾使用close函数关闭文件,以保证信息的完整。

关于作者:李明江,资深大数据专家,贵州省计算机学会常务理事,黔南州大数据专家委员会委员,黔南州计算机学会会长,黔南州教育信息化建设专家库专家,黔南民族师范学院计算机与信息学院院长,全国高校大数据教育联盟理事。

张良均,资深大数据挖掘与分析专家、模式识别专家、AI技术专家。有10余年大数据挖掘与分析经验,擅长Python、R、Hadoop、Matlab等技术实现的数据挖掘与分析,对机器学习等AI技术驱动的数据分析也有深入研究。

本文摘编自《Python3智能数据分析快速入门》,经出版方授权发布。

延伸阅读《Python3智能数据分析快速入门》

点击上图了解及购买

转载请联系微信:DoctorData

推荐语:本书假设你有一定的数据分析基础,但是没有Python和AI基础,为了帮助你快速掌握智能数据分析需要的技术和方法,书中有针对性地讲解了Python和AI中必须要掌握的知识点,内容由浅入深,循序渐进。从环境配置、基本语法、基础函数到第三方库的安装与使用,对各个操作步骤、函数、工具、代码示例等的讲解非常详尽,确保所有满足条件的读者都能快速入门。

有话要说????

Q: 你常用哪些I/O函数

欢迎留言与大家分享

猜你想看????

  • 婚恋交友网站比相亲更靠谱!幸福婚姻算法了解一下

  • 自动驾驶、人工智能将把你的未来生活变成什么样?

  • 被新基建点名的大数据,有哪些书最值得读?

  • 为什么中文分词比英文分词更难?有哪些常用算法?(附代码)

更多精彩????

在公众号对话框输入以下关键词

查看更多优质内容!

PPT | 读书 | 书单 | 硬核 | 干货 

大数据 | 揭秘 | Python | 可视化

AI | 人工智能 | 5G | 中台

机器学习 | 深度学习 | 神经网络

合伙人 1024 | 大神 | 数学

据统计,99%的大咖都完成了这个神操作

????

零基础入门Python I/O:从print函数开始相关推荐

  1. python零基础能学吗 知乎-如何零基础入门 Python?

    从17年6月入门Python到今天有大半年了,总结一下这半年来自学Python的路径. 本人只在两年前接触过HTML和CSS,但严格来说这两门只能算是标记语言而非编程语言,而且开始学Python的时候 ...

  2. (第二版)零基础入门Python小甲鱼-笔记-第三章-p5

    (第二版)零基础入门Python小甲鱼-笔记-第三章-p5 变量和字符串(下) 上节课讲了有些字符比如换行符.TAB制表符还有单引号.双引号等等...可以通过转义字符来实现,今天来谈谈原始字符串 1. ...

  3. 零基础入门python爬虫之《青春有你2》选手信息爬取

    零基础入门python爬虫之<青春有你2>选手信息爬取 完成<青春有你2>选手图片爬取,生成选手图片的绝对路径并输出,统计爬取的图片总数量.使用工具:requests模块.Be ...

  4. 介绍一本零基础入门Python数据分析的书

    大家好,我是 Lemon. 有不少读者在询问如何入门Python.如何入门Python数据分析,之前跟大家分享了两本零基础入门Python的书籍:<Python编程从入门到实践> 和< ...

  5. 自学python需要安装什么软件-零基础入门Python怎么学习?老男孩python用什么软件...

    在培训学习Python时,怎么才能学好Python?随着Python技术的发展,越来越多的人开始学习Python编程语言,那么零基础入门Python该怎么学习? 1.要养成良好的代码编写习惯,注重细节 ...

  6. python爬虫教程入门-零基础入门Python爬虫不知道怎么学?这是入门的完整教程

    原标题:零基础入门Python爬虫不知道怎么学?这是入门的完整教程 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑 ...

  7. python编程零基础-如何零基础入门Python编程?

    Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基础入门Python编程学习有什么好的技巧 ...

  8. python问题分享_零基础入门Python常见问题分享

    零基础入门Python常见问题有哪些?作为经常混迹在各大Python技术论坛的小编而言,见到最多的话题就是:学习Python难不难?零基础可以学习Python吗?如何学习Python?等等.今天小编就 ...

  9. python零基础入门教程-零基础入门Python爬虫不知道怎么学?这是入门的完整教程...

    原标题:零基础入门Python爬虫不知道怎么学?这是入门的完整教程 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑 ...

  10. python是什么软件-零基础入门Python怎么学习?老男孩python用什么软件

    在培训学习Python时,怎么才能学好Python?随着Python技术的发展,越来越多的人开始学习Python编程语言,那么零基础入门Python该怎么学习? 1.要养成良好的代码编写习惯,注重细节 ...

最新文章

  1. python画函数曲线-使用Python画数学函数曲线
  2. Java Collection
  3. python中def fun(a、b=200)_python中的函数的参数和可变参数
  4. AIX常见日志查看位置
  5. SAP Spartacus Multi-Site Configuration
  6. Bootstrap学习笔记(四)-----Bootstrap每天必学之表单
  7. Anaconda如何重新在开始菜单显示
  8. 购书中心管理系统的设计
  9. r读取文件夹下的所有csv文件_[R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。...
  10. 书写「简历」时,需要规避的错误
  11. OJ 里面的 G++ 和C++ 到底有什么区别, 为什么有时候G++能过,C++不能过,而有时候C++能过,G++不能过?
  12. 关于NSIS脚本操作静默安装第三方程序+判断电脑位数
  13. OSChina 周五乱弹 —— IG wxz 请联系小小编辑付钱删帖
  14. android电视直播卡顿,智能电视或电视盒子经常会在看直播的时候卡顿
  15. 引流产品用哪些比较合适?什么样的产品适合做引流?
  16. python中[:, 0]是什么意思
  17. 推荐一个Intellij IDEA插件--Key Promoter X
  18. 批处理 检测U盘插入并自动备份文件
  19. java 日期相差月数_Java 计算两个日期之间相差的月数
  20. 【Java整合Milvus】SpringBoot整合Milvus向量数据库以及虹软SDK实现以图搜图

热门文章

  1. Qt笔记-QSerialPort的使用(串口通信简单实例)
  2. Qt笔记-Qt获取百度下拉推荐词
  3. Java文档阅读笔记-JDBC Driver
  4. vue 刷新echarts_在vue.js中使用echarts,数据动态刷新
  5. html上拉下拉查看文字内容,html5上拉下拉事件效果演示
  6. php使用axios发送请求,axios源码之模拟实现axios发送请求
  7. Linux系统编程6:入门篇之如何拿下gdb调试器?来和我一起调试一个程序
  8. 拜占庭将军问题深入探讨
  9. LeetCode 605 种花问题
  10. HTML <input> required 属性