Python腳本編程的知識點

for循環

  1. 對列表進行迭代
>>> for i in [1,2,3]:
···		print (i)
···
1
2
3
  1. 通過range()函數生成連續數列
>>> for i in range(1,5):
···		print(i)
···
1
2
3
4
  1. range(初始值,終止值,步長),range得到的是一個左閉右開區間。
>>> range(1,10)
[1,2,3,4,5,6,7,8,9]

>>>range(1,9,2)
[1,3,5,7]

文件操作

  1. 文件操作的基本流程
  • 調用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)
  1. 通過字符串strip()方法將文件中每行末尾的\n去除
>>> f=open("/tmp/ip.txt", "r")
>>> for i in f.readlines():
		print (i.strip("\n"))

導入模塊(庫)

模塊的概念

  1. 模塊也叫庫,每個模塊中都內置了大量的功能函數、類和變量。它就像是積木,可以根據需要進行調用組合。
  2. 模塊就是程序,每個模塊就是一個後綴爲.py的Python程序。
  3. Python的模塊分爲標準模塊和第三方模塊,標準模塊就是python內置的,第三方模塊則需要安裝之後才能使用。
  4. 可以通過help命令瞭解一個模塊的基本幫助信息,如:help('sys')

模塊導入

  1. 無論標準模塊還是第三方模塊都需要導入。
  2. 導入方法:
  • 直接調用模塊: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的方式調用參數值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章