![网络工程师的Python之路:网络运维自动化实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/47/35011047/b_35011047.jpg)
1.3 在Linux下使用Python 3.8.2
前面提到本书只介绍在CentOS命令行终端里使用Python的方法,在GNOME桌面环境下使用Python的方法不在本书的讨论范围内。下面介绍交互模式和脚本模式在CentOS中的使用方法。
1.3.1 交互模式
我们知道,在CentOS的命令行终端里输入命令python3.8即可进入Python 3.8.2的解释器,也就进入了Python的交互模式,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-044-01.jpg?sign=1738833122-QqibDHkzw49yxHC01DcGlqdtstuv8UHf-0-20457a70faaf28815c697168ea44aa92)
在Python解释器里输入第一段代码print ('hello, world!'),解释器随即打印出了“hello,world!”的内容。这种“即时反馈”的特性是交互模式下特有的,脚本模式下不具备,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-044-02.jpg?sign=1738833122-26JztkIsICU0D5Yj06CvB6TmrI6arFRZ-0-3099847f7781c267d832aeacbceda894)
1.3.2 脚本模式
在CentOS的命令行终端里,我们可以使用文本编辑器来创建脚本,CentOS有几种常见的文本编辑器,如emacs、nano、vi等。这里介绍用vi创建Python脚本的方法。
关于vi的用法本书将只做简单介绍。另外,vi有一个加强版本叫作vim,两者的具体区别不在本书的讨论范围内。读者只需要知道在创建Python脚本时,vim支持语法高亮,而vi不支持。
vi不支持语法高亮,仅显示PuTTY默认字体的颜色,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-045-01.jpg?sign=1738833122-M1WmJykY5ljsnStTKHriCOK9OhJ2S9Od-0-49a41b7f72860fdbe961af55fd17f5ea)
vim支持语法高亮,显示彩色字体,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-045-02.jpg?sign=1738833122-4wHemwXxh30MCA3nDuIVzzaSKZgbXCdN-0-76b36978fa9b8dad40cf357bcb639005)
除此之外,两者对Python的支持并无本质区别,是否喜欢语法高亮全凭个人喜欢。只需要注意一点:vi是CentOS安装时自带的文本编辑器,vim则需要通过输入命令yum install vim安装后才能使用。
下面用实例介绍使用vi创建Python脚本的方法。
首先输入命令vi test.py,创建一个名为test.py的Python脚本,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-046-01.jpg?sign=1738833122-nPgYlGiqIx5Q0lHrvMsRnt4mgySnUVvU-0-9ef3907415a74b4531558532774a1daf)
进入vi后,按“i”键进入输入模式(屏幕左下角会显示“- - INSERT - -”),输入第一段代码print ('hello, world!'),如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-046-02.jpg?sign=1738833122-6JJ1uAxFdNzwzZ0IJnIVtlVXowKB6Q2y-0-5416e59260987122625d8a99c80644be)
然后按“ESC”键,在屏幕左下角的“- - INSERT - -”消失后,接着输入:wq,按回车键后即可保存文件并退出vi,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-047-01.jpg?sign=1738833122-X82kChwtumv8FQbwdMsaioyZMHIdlTxQ-0-d3be8fbfb82029fb68278341769e8fe0)
之后回到命令行终端,输入ls即可看到刚刚创建成功的Python脚本test.py,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-047-02.jpg?sign=1738833122-HHRRlqN5CDqZuDcRWrBOkBsYytln7ZoU-0-a7c401deb2af8d7974097db5aeb04a41)
1.3.3 运行Python脚本
与Windows命令行终端一样,在CentOS命令行终端也是通过输入python xxx.py来运行Python脚本的,不同的是,因为本书以Python 3.8.2为例,这里需要把python换成python3.8,写成python3.8 xxx.py来运行脚本,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-047-03.jpg?sign=1738833122-kljfgbnwvx8u8nkgibUXzcjAkm99Li2k-0-42945aeb92c32d1b4f82cd86180cc09d)
1.3.4 Shebang符号
在Linux和UNIX里,符号#!叫作Shebang,通常可以在Linux/UNIX系统脚本中第一行的开头看到它。它的作用是指明执行脚本文件的解释程序。写在Shebang后面的解释程序如果是一个可执行文件,则当执行脚本时,Shebang会把文件名作为参数传递给解释程序去执行。比如python3.8 test.py中的python3.8是解释程序,test.py是文件名,使用Shebang后,可以省去解释程序,把python3.8 test.py写成./test.py就可以运行Python脚本了。另外,Shebang指定的解释程序必须为可执行程序,否则系统会报错“Permission denied.”。
因此,如果你觉得每次都需要输入命令python2、python3或者python3.8来运行脚本比较麻烦,则可以在脚本的开头部分使用Shebang符号,然后在其后面加上/usr/bin/env python3来指定python3为解释程序(同理,如果你想使用python2来做解释程序,则可以写成#!/usr/bin/env python2),如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-048-01.jpg?sign=1738833122-PjuBtTAWphVUze9nnZ88zLMNxw8ygcTH-0-1bff6acff38ac27f03c6cfa5b313c872)
将脚本保存并退出后,用chmod命令将test.py改为可执行,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-048-02.jpg?sign=1738833122-r7FaU0f66Oxt5zTcGug23X6wK5vNg3vM-0-9099456a7da1fc6aaf4d28c053a5915d)
然后就可以用./test.py来运行脚本,省去每次都必须输入命令python2、python3或者python3.8的麻烦,如下图所示。
![](https://epubservercos.yuewen.com/3AC371/18685354508165106/epubprivate/OEBPS/Images/39806-00-049-01.jpg?sign=1738833122-8EUjFxCad4fX5RzsUpwzG3RChnFjynDp-0-fbaf5d7201f897f629c562590a330471)