100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python脚本的编写_python脚本编写与执行

python脚本的编写_python脚本编写与执行

时间:2019-08-21 06:40:36

相关推荐

python脚本的编写_python脚本编写与执行

Python不使用括号来表示代码的类和函数定义块或流程控制。代码块是由行缩进,这是严格执行表示方式。在缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量,在Python中所有的连续线缩进的空格数同样的会结成块。

Python中命名规则

Python脚本与其它语言的脚本的基本格式完全一样,本身都是纯文字文件,而在文件头要以#!指定直译程序(解释器)的位置:

[root@importer1~]# whereis python

python: /usr/bin/python2.6 /usr/bin/python/usr/lib/python2.6 /usr/lib64/python2.6 /usr/include/python2.6/usr/share/man/man1/python.1.gz

#可以在脚本首行指定路径如下

#!/usr/bin/python

习惯上会给Python程序取个扩展名.py,但Linux的脚本并不需要缀上扩展名,把*.py改成*,程序一样会正常执行。.py扩展名对Python仍有特别的意义,但只在撰写Python模块的时候才有用处。

对于指定Python解释器标头,一般还有另外一种写法。

#!/usr/bin/envpython

于是会以/usr/bin/env程序去环境变量中调用python解释器,处理Python程序档案。

Windows\linux脚本格式转换

windows下编辑的python文件在linux系统上执行时,一个常见错误是“-bash:

/usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or

directory”。

这是不同系统编码格式引起的:在windows系统中编辑的.sh .py文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。一般是因为windows行结尾和linux行结尾标识不同造成的。有如下解决方法:

在windows下转换,利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。

linux下直接替换,sed -i 's/^M//g'filename(注意^M 在linux 下写法按^M 是回车换行符,输入方法是按住CTRL+v,松开v,按m)。

也可用vi编辑在脚本中转换,首先要确保文件有可执行权限

#>chmod +x filename

#然后修改文件格式

#>vi filename

#利用如下命令查看文件格式

#:set ff或:setfileformat

#可以看到如下信息

#fileformat=dos或fileformat=unix

#利用如下命令修改文件格式

#:set ff=unix或:set fileformat=unix

#回车、存盘,并退出

在Windows中 '\r' 回车(Carriage Return),回到当前行的行首,而不会换到下一行, '\n' 换行(Line Feed),换到当前位置的下一行,而不会回到行首。

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被搬到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是就出现了分歧。

Unix系统里,每行结尾只有“”,即"\n";Windows系统里面,每行结尾是“”,即“\r\n”;Mac系统里,每行结尾是“”,即"\n"。一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

Python直译器还会读取另一组格式为# -*- setting

-*-的标头(通常接在第一行以后),其中常用的是:

# -*- coding: UTF-8 -*-

用途是指定脚本中包含了非ASCII字符。如果你想要写中文批注,这就非常重要;Python自己有一套字符编码转换的机制,实作在codecs模块里面,但直到Python 2.4之前,繁体中文常用的Big5编码并未进入标准的codecs模块。如果脚本使用了Python看不懂的字符编码(就是指华文世界用的Big5和GB),程序虽然仍可执行,但Python解释器会送出警告。使用上述语句,仅指明脚本中包含了非ASCII字符,而并未将字符编码转换为utf-8编码。如果需要将字符编码改为utf-8,则需要在保存的时候选择保存为utf-8格式。

Windows下如果要执行.py脚本,在命令行中通过 python *.py这样的格式运行,这种情况需要将.py文件放入python.exe程序所在目录下。另一种方式是通过python的IDLE打开.py文件,然后按F5在python

shell内运行。

Python脚本语句注释

python单行注释符号(#),井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释。在python中也会有注释有很多行的时候,这种情况下就需要批量多行注释符了。多行注释是用三引号’’’ ’’’包含的。

长字符串的跨行连接

一个(对)双引号或单引号一般用于引用写在一行的字符串,如s1="hello,world."。但如果字符串很长,需要写成多行,就用到了续行符\。

>>> s1="hello, \

... world"

>>> s1

'hello, world'

>>>

除最后一行字符串外,后面加上 \ 即可实现续行。续行符(\)多用于一行写不下的情况,\前可以有多个空格,空格也会加到原字符串中。续行字符之后的一行中,缩进并不重要。

要避免空格的出现,需要借助于连接符+。但要注意连接符和续行符之间有空格。

>>> s2="hello,"+ \

" chen ping"

>>> s2

'hello, chen ping'

>>>

在此基础上,如果使用三个双引号的话,连行符就省了,即:

>>>s2=""" hello’s

... world

...haha!"""

>>> s2

'hello’s\nworld\nhaha!'

>>>

这种情况下,调用显示s1时为 hello’s\nworld\nhaha,注意其中的换行符\n。可以看出,以上这两者还是有区别的,前面的连行符(\)需要显式写出,但实际不包含在字符串中的;而使用三个双引号时换行符(\n)不用显式写出,但实际是隐式包含于字符串中的。

python 三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,其中的单号和双引号不用转义,其中的不可见字符比如/n和/t都会被保留,这样的好处是你可以替换一些多行的文本。所见即所得,对于一段html或xml格式的字符串时用三引号更直观点(此时要用单引号或双引号时候需要进行转义)。

而在PHP当中单引号和双引号的有些是不一样的,虽然表示的字符串,但是在php的单引号解析速度比双引号快,如果在Python用单号那么在字符串中就可以直接收写双引号了,反之亦然。这就是python为什么允许用两种方式的原因。在实际应用中,python 单引号和python 双引号用得比较多,有两种表示方式后,就不用老用转义字符了。

此外,还可以把一个长字符串写在一个()中,达到拆分成多行书写。如

js_fun2=("function

investfun(investamount){for(i=0;i<10;i++){var "

"invest=document.getElementsByClassName('projectList')[0].getElementsByTagName('a')[i];"

"var

invest_text=invest.querySelector('div.INVESTING').innerText;"

"if(invest_text=='立即投资')"

"{var

invest_remainamount=invest.querySelector('div.INVESTING').nextSibling.innerText;"

"var

remainamount=Number(invest_remainamount.match(/\d+/g)"

");if(remainamount>investamount){invest.click();break;}}}};investfun("+str(amount)+");")

Python脚本中调用shell命令和工具

1、os.system(string cmd | scriptname.sh)

可用于在远程类unix上执行shell 命令,如在android底层命令行上执行。该操作将输出打印到标准输出中,这也意味着无法用变量去接收命令执行结果,只返回脚本退出时的状态码,如

>>>a=os.system("cat /proc/cpuinfo")

>>>a

0

2、os.popen(cmd)

要得到命令的输出内容,只需再调用下read()或readlines()等 。

[NSOS1.1 ~]# python

Python2.4.3 (#1, Dec 10 , 17:24:35)

[GCC4.1.2 0704 (Red Hat 4.1.2-50)] on linux2

Type "help","copyright", "credits" or "license" for moreinformation.

>>> import os

>>> b=os.popen("cat /usr/local/liveupdate/version").readlines(); #按行读取,返回列表

>>> b

['#Local version information,SHOULD NOT be modified.\n', 'Product_name=Traffic Control\n','Current_Version=5.0\n', 'Last_Patch_SN=1\n', 'DB_Patch_SN=0\n','Last_Build_SN=0\n', 'Last_Hotfix_SN=0\n', 'Type=tc\n']

>>> b[1]

'Product_name=Traffic Control\n'

>>>type(b)

>>>

给Python脚本传参数

如果想对python脚本传参数,需要先导入模块:sys。

脚本调用方式为

[root@localhosttest]#python downloadximala.py参数1参数2 …

则在脚本找那个,可使用变量来接收这些参数,其中,脚本名为 sys.argv[0],参数1为sys.argv[1],参数2为sys.argv[2],各参数以空格分割,如果参数中带有空格,需要用引号引用起来。

如果脚本中引用的参数超过了传参的个数,将会报IndexError: list index out of range错误。

脚本退出代码,sys.exit(0)表示正常退出,sys.exit(1)表示非正常退出。

Python 交互命令行中执行.py文件

只需要3个步骤,

1. importsys

2. 往系统路径中加入自己存放py文件的地址

>>>sys.path.append("/newtest")

3. 然后就可以开始通过import的方法导入,如从test.py文件中加载所有的内容

>>>from test import *

这样就可以使用test.py中相关的方法和内容了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。