python3之系统命令行和文件
-----------
尽管交互命令行对于实验和测试来说都很好,但是它也有一个很大的缺点:python一旦执行了输入的程序之后,它们就消失了。为了能够永久的保存程序,需要在文件中写入代码,这样的文件通常叫做模块。模块是一个包含了python语句的简单文本文件。一旦编写完成,可以让python解释器多次运行这样的文件中的语句,并且可以以多种方式去运行: 通过系统命令、通过点击图标、通过在IDLE用户界面中选择等方式。无论它是如何运行的,每一次当你运行模块文件时,python都会从头至尾地执行模块文件中的每一条代码。
这一部分的术语可能会有某些变化。例如,模块文件常常作为python写成的程序。也就是说,一个程序是由一系列预编写好的语句构成,保存在文件中,从而可以反复执行。
可以直接运行的模块文件往往也叫做脚本(一个顶层程序文件的非正式说法)。有些人将"模块"这个说法应用于被另一个文件所导入的文件。

第一段脚本

打开文本编辑器,并在命名为script1.py的新文本文件中输入如下python语句:

#A first Python script
import sys            #Load a library module
print(sys.platform)   
print(2**100)         #Raise 2 to a power
x="Spam!"
print(x*8)            #String repetition

这个文件是我们第一个正式python脚本:


1.导入一个python模块(附加工具的库),以获取系统平台的名称。


2.运行3个print函数调用,以显示脚本的结果。


3.使用一个名为x的变量,在创建的时候对其赋值,保存一个字符串对象。


这里的sys.platform只是一个字符串,它表示我们所工作的计算机的类型,它位于名为sys的标准python模块中,我们必须导入以加载该模块。 我们在这里还添加了一些正式的

python注释,即#符号之后的文本。注释可以自成一行,也可以放置在代码行的右边。



使用命令行运行文件


一旦已经保存了这个文本文件,可以将其完整的文件名作为一条python命令的第一个参数,在系统shell提示中输入,从而要求python来运行它:


python script1.py

由于这种方法使用shell命令行来启动python程序,所有常用的shell语法都适用。例如,我们可以使用特定的shell语法,把一个python脚本的输出定向到一个文件中,从而保存起来以备以后使用或查看:


python script1.py > saveit.txt

在这个例子中,前面的运行中的3个输出行都存储到了saveit.txt,而不是显示出来。这通常叫做 流重定向 ,它用于文本的输入和输出,而且在windows和类似unix的系统上都可以使用。

它几乎和python不相关(python只是支持它而已)。



使用命令行和文件 


对于初学者来说,我们提示大家注意这些

新手陷阱: 


1.

注意windows上的默认扩展名 


python程序文件的后缀为.py,由于windows默认隐藏文件扩展名,所以常常是命名成了xxxx.py.txt。 


2.

在系统提示模式下使用文件扩展名,但是在导入时别使用文件扩展名 


在系统命令行中别忘记输入文件的完整文件名。也就是说,使用python script1.py而不是python script1。我们将会在后边提到python的导入语句,忽略.py文件后缀名以及目录路径(例如,import script)。 这看起来简单,却是一个常见的错误。 


在系统提示模式下,你就是在一个系统的shell中,而不是python中,所以python的模块文件的搜索规则不再适用了。正是如此,必须包括.py后缀,并且可以在运行文件前包括其完整路径(例如,python d:\tests\spam.py)。然而,在python代码中,你可以只写import spam,并依靠python模块搜索的路径定位文件。 


3.

在文件中使用print语句 


不像交互模式的编程,我们往往需要使用print语句来看程序文件的输出。如果没有看到如何输出,确保在你的文件中已经使用了'print'。然而,在交互式会话中是不需要print语句的,因为python自动响应表达式的结果。