通常来说,一个Python程序可以从键盘读取输入,也可以从文件读取输入;而程序的结果可以输出到屏幕上,也可以保存到文件中便于以后使用。

一、控制台I/O

1.读取键盘输入

内置函数input,用于从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):

>>> str1=input('请输入:')
请输入:python3.6.0
>>> print(str1)
python3.6.0

注:在Python 3.x版本中取消了 raw_input() 函数。

2.输出到屏幕

最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式:

print([object, ...][, sep=' '][, end='endline_character_here'][, file=redirect_to_here])

方括号内是可选的,sep表示分割符,end表示结束符,file表示重定向文件。如果要给sep、end、file指定值必须使用关键字参数。

>>> print('welcome','to python',sep='%')
welcome%to python
>>> print('welcome',' ','to python',end='.')
welcome   to python.

二、文件I/O

读写文件之前,先用open()函数打开一个文件,它会返回一个文件对象(file object):

f = open(filename,mode)

如果不指定mode参数,文件将默认以‘r'模式打开。模式中的字符有:

  • r:只读
  • w:只写,如果文件已存在则将其覆盖。如果该文件不存在,创建新文件
  • +:读写(不能单独使用)
  • a:打开文件用于追加,只写,不存在则创建新文件
  • b:以二进制模式打开(不能单独使用)

所以可能的模式大概有r、w、r+、w+、rb、wb、rb+、wb+、a、a+、ab、ab+,注意只有w和a可以创建文件。
通常情况下,文件都是以文本模式(text mode)打开的,也就是说,从文件中读写的是以一种特定的编码格式进行编码(默认的是 UTF-8)的字符串。

>>> f=open('F:\python_test\python_test.txt','w+')
>>> f.write('welcome to python')
17
>>> f.close()

如果文件以二进制模式(binary mode)打开,数据将以字节对象的形式进行读写:

>>> f2=open('F:\python_test\python_test.txt','wb+')
>>> f2.write('welcome to python3.6.0')#报错
Traceback (most recent call last):File "<pyshell#12>", line 1, in <module>f2.write('welcome to python3.6.0')#报错
TypeError: a bytes-like object is required, not 'str'
>>> f2.write(b'welcome to python3.6.0')
22
>>> f2.close()

Bytes对象是0到127的不可修改的整数序列,或纯粹的 ASCII 字符,它的用途是存储二进制数据。可以通过在一个字符串前面加上'b'来创建一个bytes literal;也可以通过bytes() 函数创建一个 bytes 对象。
注意:如果bytes() 函数的初始化器是一个字符串,那么必须提供一种编码。

>>> b1=b'welcome to python'
>>> b2=bytes('welcome to python','UTF-8')
>>> print(b1)
b'welcome to python'
>>> print(b2)
b'welcome to python'

上面输出的字符串前面带b',字符串对象与字节对象是不兼容的,要将 bytes 转变为 str, bytes 对象必须要进行解码,使用decode() 方法:

>>> print(b1.decode())
welcome to python
>>> print(b1.decode())
welcome to python

文件对象的方法(假设f是一个文件对象):

  • f.read(size) :读取size个字节的数据,然后作为字符串或 bytes 对象返回。size是一个可选参数,如果不指定size,则读取文件的所有内容。
  • f.readline() :读取一行。在字符串末尾会留下换行符 (\n),如果到文件尾,返回空字符串。
  • f.readlines() :读取所有行,储存在列表中,每个元素是一行,相当于list(f)。
  • f.write(string) :将 string 写入到文件中,返回写入的字符数。如果以二进制模式写文件,需要将string转换为 bytes 对象。
  • f.tell() :返回文件对象当前所处的位置,它是从文件开头开始算起的字节数。
  • f.seek(offset, from_what) :改变文件对象所处的位置。offset是相对参考位置的偏移量,from_what 取值 0(文件头, 默认)、1(当前位置)、2(文件尾)表示参考位置。
  • f.close() :关闭文件对象。

这些都是很常用的方法,当然文件对象不止这些方法。根据打开的模式不同,open() 返回的文件对象类型也不同:

三、格式化输出

一般来说,我们希望更多的控制输出格式,而不是简单的以空格分割。这里有两种方式:

第一种是由你自己控制。使用字符串切片、连接操作以及 string 包含的一些有用的操作。
第二种是使用str.format()方法。

# 第一种方式:自己控制 (idle中输入,按F5运行)
for x in range(1, 11): print(str(x).rjust(2), str(x*x).rjust(3), end=' ') print(str(x*x*x).rjust(4))
# 第二种方式:str.format()(idle输入,按F5运行)
for x in range(1, 11): print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
#{0:2d} 表示第一个参数x的格式。0 代表x,:2d 表示两个宽度的10进制数显示。

两种方式的输出结果都是:

 1   1    12   4    83   9   274  16   645  25  1256  36  2167  49  3438  64  5129  81  729
10 100 1000

第一种方式中,Python rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。字符串对象的 str.rjust() 方法的作用是将字符串靠右,并默认在左边填充空格,类似的方法还有 str.ljust() 和 str.center() 。这些方法并不会写任何东西,它们仅仅返回新的字符串,如果输入很长,它们并不会截断字符串。我们注意到,同样是输出一个平方与立方表,使用str.format()会方便很多。括号及括号里的字符将会被 format() 中的参数替换.。括号中的数字用于指定传入对象的位置:

>>> print('{0} and {1}'.format('FCQING','JJ'))
FCQING and JJ
>>> print('{1} and {0}'.format('fcqing','JJ'))
JJ and fcqing
>>> print('MY {name} is {F}.'.format(name='name',F='fcqing'))
MY name is fcqing.

可选项':'和格式标识符可以跟着 field name,这样可以进行更好的格式化:

import math
print('The value of PI is {0:.3f}.'.format(math.pi)) 

在':'后传入一个整数,可以保证该域至少有这么多的宽度,用于美化表格时很有用(idle中输入,按F5运行):

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

运行后得到结果如下:

Jack       ==>       4127
Rose       ==>       4098
Peter      ==>       7678

Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。% 操作符也可以实现字符串格式化。它将左边的参数作为类似 sprintf() 式的格式化字符串,而将右边的代入,类似于C/C++:

import math
print('The value of PI is %10.3f.' %math.pi)
# 输出:The value of PI is   3.142. 

因为这种旧式的格式化最终会从Python语言中移除,应该更多的使用 str.format() 。

附:文本模式与二进制模式

1、在Windows系统中,文本模式下,默认是将Windows平台的行末标识符 \r\n 在读时转为 \n ,而在写时将 \n 转为 \r\n 。 这种隐藏的行为对于文本文件是没有问题的,但是对于二进制数据像 JPEG 或 EXE 是会出问题的。在使用这些文件时请小心使用二进制模式。

2、在类Unix/Linux系统中,行末标识符为 \n,即文件以 \n 代表换行。所以Unix/Linux系统中在文本模式和二进制模式下并无区别。

参考:http://www.runoob.com/python/att-string-rjust.html

http://blog.csdn.net/jeff_liu_sky_/article/details/52454113

python数据分析之(1)数据输入和输出相关推荐

  1. Python数据分析pandas之数据拼接与连接

    Python数据分析pandas之数据拼接与连接 数据拼接处理 数据拼接处理指的是numpy.pandas里对数据的拼接.连接.合并等多种方法的概称.有时我们处理的数据会分很多步骤,而中间或者最终的结 ...

  2. matlab输出c语言,MATLAB数据输入和输出 C语言转换

    数据输入和输出 一.概述 MATLAB可读和写的文件格式: 文件格式文件内容扩展名读.写文件的函数MATLAB 保存的MA TLAB工作区.mat load,save 文本Text 任意textsca ...

  3. Python数据分析中的数据预处理:数据标准化

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python数据分析中的 数据预处理:数据标准化 ● 选择题 以下关于 ...

  4. 中南林业科技大学Java实验报告二:基本数据类型的使用和数据输入、输出

    实验2:基本数据类型的使用和数据输入.输出 2.1实验目的 掌握标识符命名规则: 基本数据类型的声明: 基本数据类型的初始化: 掌握从键盘输入数据. 2.2实验内容 2.2.1 编写一个程序声明8种基 ...

  5. python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]

    1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...

  6. python 数据分析-读写数据csv、xlsx文件

    1.读写csv文件可以使用基础python实现,或者使用csv模块.pandas模块实现. 基础python读写csv文件 读写单个CSV 以下为通过基础python读取CSV文件的代码,请注意,若字 ...

  7. python常用语法和示例_使用Python中的示例进行输入和输出操作

    python常用语法和示例 A Program needs to interact with the user to accomplish the desired task; this is done ...

  8. python数据分析 - 如何探索数据

    python数据分析 1.数据的组成 1.1 非结构化数据 1.2 结构化数据 1.3 矩形数据 1.4 非矩形数据 2.位置估计 2.1 均值 2.2 中位数和稳健估计量 3.变异性估计 3.1 标 ...

  9. 屏幕输出语句_2.2 数据输入与输出

    戳蓝字"趣学C语言"关注我们哦!FOEREWORD引言 每当你满怀信心的准备尝试一件新事物时,冥冥之中,宇宙晦暗一处已经亮起一丝微弱的光芒,直径或许不过纳米级别,或是更小,却耀眼异 ...

  10. python中output使用_python-02.输入Input/输出Output

    输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print('hello, world') p ...

最新文章

  1. vivo U1正式亮相
  2. 树莓派一键备份脚本 备份为img镜像 可用于量产 可选备份位置 适配Debian/Ubuntu
  3. 教表弟用Python写了个“飞机大战”游戏!表弟:可以拜你为师吗?
  4. bundle传递对象与Serializable、Parcelable接口理解和思考
  5. c语言递归函数变量作用域,C语言课程变量的作用域和生存周期、递归.ppt
  6. VMware Workstation All Key
  7. Servlet基础(一)
  8. java中的容器问题
  9. js页面传值php页面,php实现跳转传值有什么方法,js页面跳转传值
  10. 2019 年互联网人才招聘报告:Java 吃香,算法工程师紧缺,今日头条崛起!
  11. jfinal 获得 webapp 文件下文件路径
  12. 云免流控服务器响应失败,云免流服务器是否违法
  13. 书单|互联网企业面试案头书之产品经理篇
  14. 【Java进阶①】Java语言概述
  15. CCNA学习指南第十章
  16. 硬科技驱动西咸新区发展新引擎
  17. PHP 7革新与性能优化
  18. matlab 相位校正,科学网—全相位比值校正法 - 王兆华的博文
  19. python字体有哪些种类_Python的数据类型(字符串类型),python
  20. office中计算机剪贴画,Office 2010的剪贴画

热门文章

  1. 第四期coding_group笔记_用CRF实现分词-词性标注
  2. pytest学习(1)
  3. Windows下Vim设置
  4. Maven的parent pom的依赖
  5. ASP.NET防止网页后退(禁止缓存)
  6. Python+Appium+夜神模拟器安装与简单运行(2/2)
  7. 12. 打印1到最大的n位数(C++版本)
  8. VS2015 包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解
  9. Spring之切入点表达式
  10. springboot处理静态资源