通常来说,一个Python程序可以从键盘读取输入,也可以从文件读取输入;而程序的结果可以输出到屏幕上,也可以保存到文件中便于以后使用。
内置函数input,用于从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):
>>> str1=input('请输入:')
请输入:python3.6.0
>>> print(str1)
python3.6.0
注:在Python 3.x版本中取消了 raw_input() 函数。
最简单的输出方法是用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.
读写文件之前,先用open()函数打开一个文件,它会返回一个文件对象(file object):
f = open(filename,mode)
如果不指定mode参数,文件将默认以‘r'模式打开。模式中的字符有:
>>> 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 "", line 1, in
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是一个文件对象):
一般来说,我们希望更多的控制输出格式,而不是简单的以空格分割。这里有两种方式:
第一种是由你自己控制。使用字符串切片、连接操作以及 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 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
第一种方式中,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