for循环
- 对列表进行迭代
>>> for i in [1,2,3]: ··· print (i) ··· 1 2 3
- 通过range()函数生成连续数列
>>> for i in range(1,5): ··· print(i) ··· 1 2 3 4
- range(初始值,终止值,步长),range得到的是一个左闭右开区间。
>>> range(1,10) [1,2,3,4,5,6,7,8,9] >>>range(1,9,2) [1,3,5,7]
文件操作
- 文件操作的基本流程
- 调用open()函数打开文件,并创建一个File对象
- 调用File对象的read()或write()等方法,对文件内容进行读写等操作。
- 调用File对象的close()方法,关闭并保存文件内容。
- open()函数
通过open()函数以指定模式打开文件并创建文件对象:文件对象=open('文件路径', '模式')
- 文件打开模式主要包括:
1、r只读模式(默认)
2、w只写模式(如果文件已经存在,先清空原有内容,文件不存在则创建文件)
3、a追加模式(不覆盖文件中原有的内容) - 如果传递给open()的文件名不存在。写模式和添加模式都会创建一个新的空文件。
- 写入文件
- 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()
- 读取文件
- Python文件对象提供了三种“读”方法:
1、read()
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()
2、readline()>>> f=open("/tmp/ip.txt","r") >>> f.read(12) '192.168.80.1' >>> f.close()
readline()方法可以从文件中读取一行并作为结果返回:
3、readlines()>>> f-open("/tmp/ip.txt","r") >>> f.readline() '192.168.80.1\n' >>> f.readline() '192.168.80.2\n' >>> f.close()
readlines()方法返回一个列表,文件的每一行作为列表的一个元素:
4、seek()方法可以将指针返回到指定位置。>>> 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()
>>> f.seek(0)#返回到第一行 '192.168.80.1\n'
- 读取文件
- 通过for循环对列表进行迭代,这是最常用的读取方法。
>>> f=open("/tmp/ip.txt", "r") >>> for i in f.readlines(): print (i)
- 通过字符串strip()方法将文件中每行末尾的\n去除
>>> f=open("/tmp/ip.txt", "r") >>> for i in f.readlines(): print (i.strip("\n"))
导入模块(库)
模块的概念
- 模块也叫库,每个模块中都内置了大量的功能函数、类和变量。它就像是积木,可以根据需要进行调用组合。
- 模块就是程序,每个模块就是一个后缀为.py的Python程序。
- Python的模块分为标准模块和第三方模块,标准模块就是python内置的,第三方模块则需要安装之后才能使用。
- 可以通过help命令了解一个模块的基本帮助信息,如:
help('sys')
模块导入
- 无论标准模块还是第三方模块都需要导入。
- 导入方法:
- 直接调用模块:
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()是一个方法,作用是退出当前程序。
- sys.exit()退出当前程序,并返回SystemExit异常。
- sys.exit(0),正常退出。
- 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的方式调用参数值。
I'm so cute. Please give me a candy.
- 本文链接:https://m0re.top/posts/94be70cd/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
您可以点击下方按钮切换对应评论系统,
Valineutterances