1. 文件讀寫:b模式python
import requests url = 'http://www.nnzhp.cn/wp-content/uploads/2018/01/601a335c499837a995ae10867fc36101.png' img = requests.get(url).content f = open('hhh.jpg', 'wb') # bytes:以二進制模式打開,有wb、rb、ab組合 f.write(img)
拓展:git
f = open('haha.txt','w') f.write('test') # 不加下面這個這句,有時會在文件中看不到寫入的數據,是由於有緩衝區,它會等緩衝區數據存儲到必定的值纔會寫入到磁盤 f.flush() #當即把緩衝區的內容寫到磁盤裏面。 time.sleep(50) with open('b.txt') as f,open('c.txt') as fc:#自動關文件指針;一個with能夠打開多個文件,逗號隔開便可。 f.write('aaa')
2. 修改文件的2種方式:windows
# 粗暴直接,適用於小文件,內容少 with open('geci','a+',encoding='utf-8') as f: f.seek(0) all = f.read() new_all = all.replace('二','一') f.seek(0) f.truncate() f.write(new_all) f.flush()
# 替換一個文件中的內容,直接修改文件很差實現,通常把修改後的文件內容保存到bak文件,刪除原來文件,rename bak文件。 # .**文件是隱藏文件 with open('geci.txt', 'r+', encoding='utf-8') as f, open('.geci.bak', 'w', encoding='utf-8') as ff: for i in f: newline = i.replace('一', '二') ff.write(newline) os.remove('geci.txt') os.rename('.geci.bak', 'geic.txt')
3. 函數函數
# 函數:就是把一堆代碼組合到一塊兒,變成一個總體 # 提升代碼的複用性 # def hello(filename,content): 這種是位置參數,必填參數 # def hello(filename,content='ceshi'): # 默認值參數,非必填 def hello(filename,content=''): #形參 with open(filename,'a+',encoding='utf-8') as f: if content: f.write(content) else: f.seek(0) res = f.read() return res print(hello('demo.txt')) #實參
# return 當即結束函數 print(hello('demo.txt','1243')) #函數沒有寫return的話,返回值是None,返回值不是必須寫的,須要獲取函數返回值再寫 a = 100
可變參數性能
# 可變參數,*args def test(a,b=1,*args): # print("a",a) # print("b", b, type(b)) print('args',args) test("haha") # 若是後面有多餘的參數,會把它保存到args元組中 test("haha",'22','1','2')
關鍵字參數學習
# 關鍵字參數 def test2(a, **kwargs): print('a:',a) print(kwargs) test2(a=1,name='test') # {'name': 'test'}
練習題測試
print('-1'.isdigit()) # 判斷一個字符串是不是純數字 # 1.寫一個校驗字符串是否爲合法的小數 # 0.88 # -0.99 def check_float(num): str_num = str(num) print("str_num:",str_num) if str_num.count('.') == 1: left = str_num.split('.')[0] right = str_num.split('.')[1] print("left %s;right %s" % (left,right)) if left.isdigit() and right.isdigit(): # 正小數 return True elif left.startswith('-') and left.count('-') == 1: if left.split('-')[-1].isdigit() and right.isdigit(): return True return False print(check_float('-1.-1')) # 這裏若是直接傳float型數字,傳參過程當中會自動給把數字給你轉型。
4. 模塊url
# 一個Python文件就是一個模塊 # 1.標準模塊 # python自帶的,不須要安裝 # 2.第三方模塊 # 手動安裝 # # 首先下載安裝包 # 解壓 # 在命令行裏面進入到這個解壓以後的目錄(windows下如何快速進入cmd命令窗口:按住shift+右鍵:在此處打開命令窗口) # 執行python setup.py install # # 3.本身寫的python文件 # import xx 導入一個文件的實質:把這個python文件運行一次 # import hahaha # import 導入文件時,首先從當前目錄下找這個文件 # 而後從python的環境變量中尋找 # 環境變量是讓在任何目錄下都能使用這個命令 import sys print(sys.path) # 查看系統的環境變量,在pycharm下執行這句,會把工程根目錄也打印出來,這是pycharm自動加上的。
5. 遞歸spa
# 遞歸:本身調用本身 count = 0 def test1(): global count count += 1 # num = 8 # num = int(input('please enter a number:')) # if num%2==0:# 判斷輸入的數字是否是偶數 # return True # 若是是偶數的話,程序就退出了,返回true print('不是偶數請從新輸入!') return test1() # 若是不是偶數的話繼續調用本身,輸入值 print(test1()) # 調用test # 用遞歸能實現的用循環都能實現,但最好不用遞歸,效率較低。 # 遞歸最多遞歸999次
6. 集合命令行
# 集合,天生去重 # 集合的做用: # 一、它能夠把一個列表中重複的數據去掉,而不須要你再寫判斷 # 二、能夠作關係測試,好比說有兩個班,一個性能測試班,一個是接口測試班的,想找出來既學習了性能又學習了接口測試的同窗,就能夠用集合 li = [2, 3, 1, 2, 3, 4] s_list = set(li) # 這樣就定義了一個集合 set1 = set([1, 3, 4, 5, 6]) # 這種方式和上面的都是把list轉換成一個集合 set2 = {'hehe', 'hehe1', 'hehe3'} # 直接定義一個集合 s = set() s2 = {'1', '2', '3', '4'} # 集合是無序的,沒有辦法經過下標取值 s2.add('5') s2.add('1') s3 = {'1', '2'} print(s2.intersection(s3)) # 取交集,生成了1個新的集合,不會修改原來的集合 print(s2) print(s3) # print(s3 & s2) # 取交集 # # print(s3.union(s2)) # 取並集 # print(s3 | s2) # 取並集 # # print(s2.difference(s3)) # 在s2中存在,在s3中不存在 # print(s2 - s3) # 取差集