python可以写什么脚本_python脚本编写与执行

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

Python中命名规则

fff5401d7c08

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 2010, 17:24:35)

[GCC4.1.2 20080704 (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.        import sys

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

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

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

>>>from test import *

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值