for循环

  1. 对列表进行迭代
    >>> for i in [1,2,3]:
    ···		print (i)
    ···
    1
    2
    3
  2. 通过range()函数生成连续数列
    >>> for i in range(1,5):
    ···		print(i)
    ···
    1
    2
    3
    4
  3. range(初始值,终止值,步长),range得到的是一个左闭右开区间。
    >>> range(1,10)
    [1,2,3,4,5,6,7,8,9]
    
    >>>range(1,9,2)
    [1,3,5,7]

    文件操作

  4. 文件操作的基本流程
  • 调用open()函数打开文件,并创建一个File对象
  • 调用File对象的read()或write()等方法,对文件内容进行读写等操作。
  • 调用File对象的close()方法,关闭并保存文件内容。
  1. open()函数
    通过open()函数以指定模式打开文件并创建文件对象:
    文件对象=open('文件路径', '模式')
  • 文件打开模式主要包括:
    1、r只读模式(默认)
    2、w只写模式(如果文件已经存在,先清空原有内容,文件不存在则创建文件)
    3、a追加模式(不覆盖文件中原有的内容)
  • 如果传递给open()的文件名不存在。写模式和添加模式都会创建一个新的空文件。
  1. 写入文件
  • write()方法不会在字符串的末尾自动添加换行字符
  • 向文件中写入内容:
    >>> f=open("/tmp/ip.txt","w")
    >>> f.write("192.168.80.1\n")
    >>> f.write("192.168.80.2\n")
    >>> f.write("192.168.80.3\n")
    >>> f.close()
  • 向文件中追加内容:
    >>> f=open("/tmp/ip.txt","o")
    >>> f.write("192.168.80.10\n")
    >>> f.write("192.168.80.20\n")
    >>> f.close()
  1. 读取文件
  • Python文件对象提供了三种“读”方法:
    1、read()
    read()方法可以一次性读取文件的所有内容
    >>> f=open("/tmp/ip.txt", "r")
    >>> f.read()
    '192.168.80.1\n192.168.80.2\n192.168.80.3\n'
    >>> f.close()
    read()方法也可以指定读取前几个字节的数据:
    >>> f=open("/tmp/ip.txt","r")
    >>> f.read(12)
    '192.168.80.1'
    >>> f.close()
    2、readline()
    readline()方法可以从文件中读取一行并作为结果返回:
    >>> f-open("/tmp/ip.txt","r")
    >>> f.readline()
    '192.168.80.1\n'
    >>> f.readline()
    '192.168.80.2\n'
    >>> f.close()
    3、readlines()
    readlines()方法返回一个列表,文件的每一行作为列表的一个元素:
    >>> f=open("/tmp/ip.txt","r")
    >>> f.readlines()
    ['192.168.80.1\n', '192.168.80.2\n', '192.168.80.3\n']
    >>> f.seek(0)
    >>> f.readlines()[0]#数组限定读取的信息
    '192.168.80.1\n'
    f.close()
    4、seek()方法可以将指针返回到指定位置。
    >>> f.seek(0)#返回到第一行
    '192.168.80.1\n'
  • 读取文件
  1. 通过for循环对列表进行迭代,这是最常用的读取方法。
    >>> f=open("/tmp/ip.txt", "r")
    >>> for i in f.readlines():
    		print (i)
  2. 通过字符串strip()方法将文件中每行末尾的\n去除
    >>> f=open("/tmp/ip.txt", "r")
    >>> for i in f.readlines():
    		print (i.strip("\n"))

    导入模块(库)

    模块的概念

  3. 模块也叫库,每个模块中都内置了大量的功能函数、类和变量。它就像是积木,可以根据需要进行调用组合。
  4. 模块就是程序,每个模块就是一个后缀为.py的Python程序。
  5. Python的模块分为标准模块和第三方模块,标准模块就是python内置的,第三方模块则需要安装之后才能使用。
  6. 可以通过help命令了解一个模块的基本帮助信息,如:help('sys')

    模块导入

  7. 无论标准模块还是第三方模块都需要导入。
  8. 导入方法:
  • 直接调用模块:import 模块名
  • 从模块中调用某个函数:from 模块名 import 函数名
  • import os ,应采用“模块名.方法名”的形式使用模块中的方法。如:os.system()
  • from os import * ,可以直接使用system()方法,无需加上模块名作为前缀。

    sys模块

    sys是一个标准模块,与Python解释器密切相关。
  • (1)sys.argv
    sys.argv是一个变量,专门用来向Python解释器传递参数,类似于Shell脚本编程中的位置变量。
    #!/usr/bin/env python
    #coding=utf-8
    import sys
    
    print("脚本文件是:",sys.argv[0])
    print("参数的数量是:",len(sys.argv))
    print("所有的参数:",str(sys.argv))
    print("第一个参数是:",sys.argv[1])
    print("第二个参数是:",sys.argv[2])
    print("第三个参数是:",sys.argv[3])
  • (2)sys.exit()
    sys.exit()是一个方法,作用是退出当前程序。
  1. sys.exit()退出当前程序,并返回SystemExit异常。
  2. sys.exit(0),正常退出。
  3. sys.exit(“程序退出”),显示一段提示信息。
    #!/usr/bin/env python
    #coding=utf-8
    
    import sys
    if len(sys.argv) != 2:
    	print("正确使用方法:"+ sys.argv[0] + "IP列表文件")
    	print("例如:./m0re.py /root/ip.txt")
    	sys.exit()

    OS模块

    os模块提供了访问操作系统服务的功能。
    它最常用的是os.system()方法,可以在Python中使用操作系统命令。
    os.system("ls /root")
    banner.py  flag.sh  pass.txt
    ip.txt  shadow
    0
    还有几个
  • os.path.isfile()方法,判断指定的对象是否为文件,返回True或False。
    >>> os.path.isfile("/root/pass.txt")
    True
    >>> os.path.isfile("/root/password.txt")
    False
  • os.path.isdir()方法,判断指定对象是否为目录。
  • os.path.exists()方法,判断指定的对象是否存在。
    >>> os.path.exists("/root/pass.txt")
    True
    >>> os.path.exists("/root/")
    True

    多线程

    通过threading模块中的Thread()类可以创建和管理线程对象。
    使用时,使用多线程调用一个函数,然后启动,就可以明显提高速度。
    t=Thread(target=checkVulns,args=(ip,port))
    t.start()
    用时再查

    optparse模块

    利用该模块可以设置选项,通过选项向脚本传递所需的参数。
    from optparse import OptionParser
    parser=OptionParser()
    parser.add_option("-f","--file",type="string",dest="filename")
    parser.add_option("-i","--ip",type="string",dest="address")
    (option,args)=parser.parse_args()
    
    print options.filename
    print options.address
    代码解释
    ·第一行,导入optparse模块中的类OptionParser。
    ·第二行,将类实例化成对象。
    ·第三行,利用add_option()方法添加选项。-f和--file分别表示长短选项名,长选项可以省略。type指定了参数类型,默认为string,dest指定将参数赋值给哪个变量。
    ·第四行,利用add_option()方法添加选项-i和-ip。
    ·第五行,利用parse_args()方法来获取定义的选项和参数,可以视作一种固定用法。
    ·parse_args()方法返回两个值,其中options对象保存了所传递进来的参数值。
    ·第六、七行,通过options.filename和options.address的方式调用参数值。