输入和输出
这里讨论与输入和输出有关的一些问题。

输出格式

print 是 Python 的一个标准函数,主要用于给程序使用者输出信息,产生的信息默认显示在交互窗口里。Python 称之为 "标准输出文件",print 把输出送到这里。

简单使用 print,它逐个输出实参表达式的值,两个输出之间用空格分隔。

实际上 print 还有几个特殊参数,它们都有默认值,如需改变,可以用关键字实参形式提供:

  • sep 给定不同输出项之间的分隔字符串,默认值为 ' '(包含一个空格的串)
  • end 给定一次调用的最后结束串,默认值为 '\n'(一个换行符的串)
  • file 给定输出目标,默认值是 sys.stdout,即 "标准输出文件"
  • 所有非关键字实参都看作要求输出的实参,求值并转换到字符串形式后输出
如果需要特定的输出形式,也可以做到。有两种基本方法。第一种方法是自己构造合乎需要的字符串,而后送给 print(或其他输出函数)输出。第二种方法(更强大)是利用 Python 的输出格式控制功能。

由于输出格式控制是很具体的问题,这里不打算介绍。有关情况可以参考教程 7.1 节的讨论,以及标准库手册 4.7 节对字符串类型和 6.1 节对格式化串的讨论。

文件输入和输出

大量数据一定保存在操作系统管理下的文件里,产生的成批结果也需要存入文件。Python 语言提供了针对文件的输入输出功能。下面介绍 Python 中与文件有关的基本功能。

要使用一个文件,需要先打开;用完后需要关闭。打开文件后就可以使用了。

Python 用标准函数 open 打开文件,函数 open 完成时将建立一个与指定文件关联的文件对象。打开文件时要说明文件的使用方式。假定要打开的文件名字是 file1.dat,准备读入这个文件的内容,就应该用读模式(用字符串 'r' 表示)打开文件,写法是:

	inf = open('file1.dat', 'r')
语句执行后变量 inf 的值就是 open 建立的文件对象,它关联于文件 file1.dat,可以通过这个对象使用该文件。

如果希望打开文件 file2.out,用于保存程序结果,应该用写模式(用字符串 'w' 表示)打开文件,写法是:

	outf = open('file2.out', 'w')
上面两种打开模式都假定输入或输出的是文本文件,这种文件的内容为一个字符序列(可能很长)。其中可能包括各种可见字符、空格、换行符和一些特殊字符。

Python 标准库为输入和输出提供了很丰富的功能,参看标准库手册 16.2 节有关 io 库的介绍。

从文件输入

对于打开的读文件,可以执行输入操作。一个常见操作是读入文件内容:
	inf = open('file1.dat', 'r')
	data = inf.read()
	data2 = inf.read() 
第一个操作把文件 file1.dat 的所有内容读入,做成一个(可能很长的)字符串赋给标量 data,执行后 data 的值就是包含被读入文件里所保存的文本的所有字符(包括其中出现的特殊字符)的字符串。如果文件已经读完,继续读就会得到一个空串,因此 data2 的值将为一个空串。

另一常见操作是按行读入,例如

	inf = open('file2.dat', 'r')
	line1 = inf.readline()
	line2 = inf.readline()
(假定打开文件后没做前面写的 read() 操作)这两个语句之后变量 line1 和 line2 的值将是文件里第一行和第二行的内容。如果文件里的一行最后有换行字符,这个字符将成为 readline() 返回的字符串里最后一个字符。(注意:一个文件里的最后一行可能没有最后的换行)。

如果 readline() 读到的是一个空行,它将返回只包含一个换行字符的字符串,因为这就是该行的内容。如果调用时文件已读完,readline() 返回一个空字符串(可用于判断文件是否已经读完)。

打开的文本文件对象也是一种迭代器对象,可以直接作为 for 语句循环变量的数据源。人们经常用下面形式处理文本文件输入:

	for line in inf :
	    ... line ...
这相当于
	while TRUE :
	    line = inf.readline()
	    if line = '':
	        break
	    ... line ...
显然前一写法既简单又清晰。

如果想简单地输入一个文件的各行并建立一个以这些行作为元素的list,下面两种形式都行:

	lineList = list(inf)
	lineList = inf.readlines()
readlines(...) 返回以所有读入的行为元素的表。

向文件输出

基本的文本文件输出操作是 write,其参数应该是一个字符串,这个函数返回实际输出的字符个数。例如
>>> f.write('A test output with dot and newline.\n')
36
要输出其他类型的数据,应首先用 str() 将其转换为字符串。

文件还有其他打开模式,用内置函数 open 的参数的形式描述,有关情况见标准库手册第2节 "内置函数" 中有关 open 的说明。 以文本方式打开得到的文件对象支持的所有操作见标准库手册 16.2.3.1 节 io.IOBase 和 io.RawIOBase,后者是 open 返回的文件对象的类型。

有关 Python 内置输入输出(input/output,简称 I/O)功能的更全面介绍见标准库手册 16.2 节。

有关文件的详细信息

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
本页及相关页面(除另声明者外)由裘宗燕创建维护,可自由用于各种学习活动。其他使用需得到作者许可。