双击计算机上的.txt 文件,会自动启动与.txt 文件扩展名关联的应用程序。计算
机上已经设置了一些这样的文件扩展名关联。利用 Popen(),Python  也可以用这种方式打开文件。
每个操作系统都有一个程序,其行为等价于双击文档文件来打开它。在 Windows上,这是 start 程序。在 OS X 上,这是 open 程序。在 Ubuntu Linux 上,这是 see 
程序。在交互式环境中输入以下代码,根据操作系统,向 Popen()传入'start'、'open'或'see':
>>>  fileObj  =  open('hello.txt',  'w')
>>>  fileObj.write('Hello  world!')
12
>>>  fileObj.close()
>>>  import  subprocess
>>>  subprocess.Popen(['start',  'hello.txt'],  shell=True)
这里,我们将Hello  world!写入一个新的hello.txt 文件。然后调用Popen(),传入一个列表,其中包含程序名称(在这个例子中,是Windows 
上的'start'),以及文件名。我们也传入了 shell=True 关键字参数,这只在 Windows 
上需要。操作系统知道所有的文件关联,能弄清楚应该启动哪个程序,比如Notepad.exe,来处理hello.txt 文件。
在 OS X 上,open 程序用于打开文档文件和程序。如果你有 Mac,在交互式环境中输入以下代码:

>>>  subprocess.Popen(['open',  '/Applications/Calculator.app/'])
 <subprocess.Popen  object  at  0x10202ff98>


计算器应用程序应该会打开。

Unix 哲学
程序精心设计,能被其他程序启动,这样的程序比单独使用它们自己的代码更强大。Unix 的哲学是一组由UNIX 操作系统(现代的Linux 和OS X 
也是基于它)的程序员建立的软件设计原则。它认为:编写小的、目的有限的、能互操作的程序,胜过大的、功能丰富的应用程序。
较小的程序更容易理解,通过能够互操作,它们可以是更强大的应用程序的构建块。智能手机应用程序也遵循这种方式。如果你的餐厅应用程序需要显示一间咖啡店的方位,开发者不必重新发明轮子,编写自己的地图代码。餐厅
应用程序只是启动一个地图应用程序,同时传入咖啡店的地址,就像 Python  代码调用一个函数,并传入参数一样。
你在本书中编写的Python 程序大多符合Unix 哲学,尤其是在一个重要的方面:它们使用命令行参数,而不是 
input()函数调用。如果程序需要的所有信息都可以事先提供,最好是用命令行参数传入这些信息,而不是等待用户键入它。这样,命令行参数可以由人类用户键入,也可以由另一个程序提供。这种互操作的

方式,让你的程序可以作为另一个程序的部分而复用。
唯一的例外是,你不希望口令作为命令行参数传入,因为命令行可能记录它们,作为命令历史功能的一部分。在需要输入口令时,程序应该调用input()函数。
在 https://en.wikipedia.org/wiki/Unix_philosophy/