• 干货分享丨Python从入门到编写POC之读写文件


    自发布了Python介绍及安装使用的相关文章后,深受大家喜爱,遂将Python从入门到编写POC系列教程的其他章节与大家分享,旨在快速提升安全技能!

     

    今天与大家分享的是Python从入门到编写POC系列文章之读写文件,希望对大家学习有所帮助。

    读写文件

    读取键盘输入【raw_input( )或者input( )】

    >>> demo = raw_input('INPUT:');   # 是在CMD中的换行符... print "content is" , demoINPUT:HELL0 MOMOcontent is HELL0 MOMO

     

    打开或关闭文件,这里要用Python的内置函数open( ),然后创建一个file对象。

    Python打开文件的模式:

    • r 以只读模式打开文件。
    • w 以只写模式打开文件,且先把文件内容清空(truncate the file first)wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    • a 以添加模式打开文件,写文件的时候总是写到文件末尾,用seek也无用。打开的文件也是不能读的。
    • r+ 以读写方式打开文件,文件可读可写,可写到文件的任何位置。
    • w+ 和r+不同的是,它会truncate the file first。
    • a+ 和r+不同的是,它只能写到文件末尾。

    一个文件被打开后,有一个file对象,可以得到有关该文件的各种信息,以下是一些使用方法:

    • file.closed 返回true如果文件已被关闭,否则返回false。
    • file.mode 返回被打开文件的访问模式。
    • file.name 返回文件的名称。
    • file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

    举个例子

    >>> demo = open("MOMO.txt","wb")>>> print u'是否关闭:', demo.closed是否关闭:False>>> print u'访问模式:',demo.mode访问模式: wb>>> print u'文件名称:',demo.name文件名称:MOMO.txt>>> print u'末尾是否加空格:',demo.softspace末尾是否加空格:0

     

    在txt中写入东西

    >>> demo = open("MOMO.txt","wb")>>> demo.write("MOMO is My GODDESS!!!")>>> demo.close()

     

    读txt中的内容

    >>> demo1 = open("MOMO.txt","r")>>> demo1.readlines()['MOMO is My GODDESS!!!']

     

    判断

    我们开始用编辑器,这里小编用的编辑器是Sublime Text3。

    咱们讲的是Python判断,先来看一个例子:

    #coding = utf-8if 'MOMO' Love BZ':        print Trueelse:        print False

     

    当判断条件成立时(非零),则执行后面的语句,所以就返回了True。

    if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

    循环

    While循环

    格式为:

    while 判断条件:    执行语句……

    举个例子:

    #coding=utf-8port = 1100while port < 1109:        print "The PORT is:"+str(port)        port = port + 1

     

    PS:如果没有port=port+1,该循环将成为无限循环,通过Ctrl+C终止,当然了,while循环也有else语句,方法跟 if 语句差不多,这里就不演示了还有break和continue语句。

    在循环过程中,break语句可以提前退出循环。

    通过continue语句,跳过当前的这次循环,直接开始下一次循环。

    不过根据经验来说,While循环出现的次数没有For循环多。

    For循环

    格式为:

    for iterating_var in sequence:  statements(s)

    For循环的好处呢,比如你要算1+2+3+4+5手写还有解决。

    当然也可以用Python,这里用到的就是For循环。

    #coding = utf-8sum = 0for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:        sum = sum + iprint sum

    那如果是1+2+3+4+...+100呢?

    这里咱们还用For循环,不过加了range( )函数,可以生成一个整数数列:

    range(101)生成1-100的数

    #coding = utf-8sum = 0for i in range(101):        sum = sum +iprint sum

     

    理解函数

    在初中时代,数学课本是可以这么定义函数的:y=8x+6

    在高中时代,就可以这么定义函数了:f(x)=8x+8

    其中,x是什么呢?是变量,你想让它是啥数就是啥数。

    当x=6时,f(6)=8*6+8=56

    But,这并不是全部,其实在函数中,并没有规定函数是一个数,它可是任何东西。

    变量的本质,你可以把他当作一个占位符,建立一个简单的函数,咱们现在Python的解释器操作:

    >>> x = 8>>> y=8*x+8>>> y72

    咱们在继续

    >>> x = 6>>> y72

     

    当x等于6时了,y=8*x+8为啥还是72呢?

    x=8时含义将8这个对象贴上了变量x的标签,经过计算得到了72,然后变量y就引用了72;当x值变了时,但是y引用得对象还没有变,所以就还是72。

    这里还“不正规”,咱们接下来就学习定义一个“正规”函数。

    定义函数

    函数

    代码块以 def 关键词开头,def这个简写来自define,后接函数标识符名称和圆括号( )。

    定义函数内容以冒号起始,然后必须缩进(四个空格或者一个tab键),定义函数格式为:

    def 函数名(参数):        函数体

    举个例子:

    >>> def MOMO():...     print 'HELL0 MOMO!!'...>>> MOMO()  #调用MOMO这个函数HELL0 MOMO!!

     

    在定义函数的时候,参数可以等你被赋值,也可以定义一个默认值。

    #coding = utf-8def MOMO(a,b='BaZong'):        print "a:",a        print "b:",bMOMO('MOMO')print "--------------------------"MOMO(a='MOMO')

     

    如果我不给变量b定义一个值,那么就会用BaZong这个值,那如果它传了一个新的值,那就会用新的那个值。

     

    返回值

    是不是感觉跟你见到的高大上的Python有一点差别,也许你们会注意到上面都是用print输出结果,用个求绝对值的栗子来引用返回值return。

    #coding = utf-8def my_abs(x):        if x >= 0:                return x        else:                return -xif __name__ == '__main__':        number = 666        print number

    仔细看my_abs( )函数,有return x和return -x,意思就是将x/-x的值返回,返回给谁呢?

    一般情况,要将返回的值传给一个变量,然后通过变量打印出来,如果没有,那就没有回显了。

    return还有个作用,咱们在来通过一个例子看,我这里导入了base64模块。

    #coding = utf-8import base64def demo():        str = "TU9NTyBpcyBhIGJlYXV0aWZ1bCBnaXJs"        result = base64.b64decode(str)        print result        return        print "KISS MOMO"demo()

     

    两个print语句,只执行了return上面的那个,这是为什么呢?

    第一个print语句遇到return,return告诉他自己要回家,即为返回,终止了第一个print的路程;然后就没有执行第二个print语句,你可以把它当成循环中的break。

    全局变量and局部变量

    通过例子来说明:

    #coding = utf-8 a = 'momo'def demo():        a = 'BaZong'        print "this a is",ademo()print "---------------"print "this a is",a

     

    前一个print输出的函数内部的变量,后一个是外部的,像这样的,只在函数体内(某个范围内)起作用的就叫局部变量。

    全局变量

    #coding = utf-8 a = 'momo'def demo():        global a        a = 'BaZong'        print "this a is",ademo()print "---------------"print "this a is",a

     

    这两个例子区别就是多了个global a,意思就是让a是全局变量,也就是说,外面跟里面的a都一样。

    学任何一门程序语言的窍门都是要多练,多琢磨。

  • 相关阅读:
    MongoDB一次节点宕机引发的思考(源码剖析)【华为云分享】
    JavaScript基础修炼(14)——WebRTC在浏览器中如何获得指定格式的PCM数据【华为云分享】
    如何通过虚拟私有云保障服务安全【华为云分享】
    网络服务家族图谱:一张图带您了解华为云网络服务大家族!【华为云分享】
    化鲲为鹏,我有话说:鲲鹏服务器开通流程以及注意事项【华为云分享】
    hadoop小知识札记
    抽取网页中的主要内容
    Hadoop Bloom Filter 使用
    Bloom filter 2
    Bloom Filter
  • 原文地址:https://www.cnblogs.com/ichunqiu/p/12294230.html
Copyright © 2020-2023  润新知