1 import random 2 import os,shutil #文件的高級操作 3 import glob 4 5 print(random.choice('abcdefggh')) #隨機取一個字母 6 print(random.choice(["apple","beer","banana ...
模塊
1、什麼是模塊?
可以理解為一個py文件其實就是一個模塊。比如xiami.py就是一個模塊,想引入使用就在代碼里寫import xiami即可
2、模塊首先從當前目錄查詢,如果沒有再按path順序逐一查詢(sys.path)
3、一個模塊只會被導入一次。
模塊的導入方式:
0、import sys 導入模塊
1、from sys import path from語句從模塊中導入一個指定的部分(提倡的寫法)
2、from …… import * 把一個模塊的所有內容全都導入(建議不要用這種)
3、from py文件名 import 類名 (適合同級目錄引用)
4、from 文件名 import py文件名 (跨目錄)
5、import sys
相對路徑:sys.path.append("..\\src\\function")
絕對路徑:sys.path.append("c:\\love\\pythonauto")
模塊的應用示例:
1 import random 2 import os,shutil #文件的高級操作 3 import glob 4 5 print(random.choice('abcdefggh')) #隨機取一個字母 6 print(random.choice(["apple","beer","banana"])) #隨機取一個註意括弧!!! 7 8 print(os.getcwd()) #獲取當前的工作目錄 9 os.rename('a','b') #重命名文件a為b 10 os.remove(a) #刪除文件a 11 os.mkdir("test") #在當前目錄下創建一個新目錄test 12 os.chdir("c:/aa") #將當前目錄改為c:/aa 13 os.rmdir("c:/aa") #刪除這個目錄 14 os.system("mkdir today") #執行系統命令創建一個today的文件夾 15 shutil.copyfile("源文件","目標文件") #拷貝 16 shutil.move("源文件","目標文件") #移動 17 18 根據通配符進行搜索 19 print(glob.glob("*.py")) 20 print(glob.glob("c:/*.txt"))
文件讀寫
一般步驟為:
先用python內置的open()函數打開一個文件,並創建一個file對象,然後調用相關方法進行操作。wb方式是在linux下操作文件時用到的,在Windows下用w
語法:
file_object = open(file_name[,access_mode][,buffering])
access_mode決定了打開文件的模式:只讀,寫入,追加等。這個參數是非強制的,預設文件訪問模式為只讀r
# 文件路徑的三種解決方式:
# 1、r"d:\test.txt";
# 2、"d:\\test.txt";
# 3、d:/test.txt;
1 doc = "D:/pycharm workspace/practice/day.txt" 2 3 f = open(doc,"w") 4 print("文件名是",f.name) 5 print("打開方式",f.mode) 6 f.close() #關閉文件 7 print("是否關閉文件",f.closed) 8 9 fo = open(doc,"w") #以w方式打開文件 10 fo.write("abcdefgh") #寫入文件內容 11 fo.close() #關閉文件
tell seek的用法
1、tell()方法告訴你文件內的當前位置
2、seek(offset[,where])方法改變當前的位置
offset變數表示要移動的位數。where變數指定開始移動的參考位置。
where為0表示文件開始處,這是預設值;1表示當前位置;2表示文件結尾
1 fp = open(doc,"r+") #r+可讀可寫;r是只讀 2 str = fp.read() #讀取文件中的內容 3 print(str) #列印讀取的內容 4 #查找當前位置 5 position = fp.tell() 6 print("當前位置",position) 7 #把指針再次重新定位到文件開頭 8 position = fp.seek(0,0) 9 str = fp.read(2) #讀取文件中的兩個字元 10 print("文件中的內容為",str) 11 #關閉打開的文件 12 fp.close()
異常
捕獲異常可以使用try/except語句。
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理
如果不想在異常發生時結束程式,只需要在try里捕獲它。
第一種:
1 try: 2 fh = open("d:\log.txt","r") 3 fh.write("haha") 4 except Exception as e: 5 print("錯誤!無法讀取文件",str(e)) 6 else: #try沒有異常的時候才會執行else 7 print("successfully") 8 fh.close()
第二種:
1 try: 2 fh = open("d:\log.txt","r") 3 fh.write("haha") 4 except BaseException as e: 5 print("錯誤!無法讀取文件",str(e)) 6 finally: #無論如何都執行。用於文件關閉和釋放資料庫連接等 7 print("successfully")
Exception和BaseException可以捕獲基本上所有的異常
練習:
1 #write 2 doc = "D:/pycharm workspace/practice/day.txt" 3 filewirte = open(doc,"w") 4 filewirte.write("poiuytrewq") 5 filewirte.close() 6 7 #writelines 8 filewirte1 = open(doc,"r+") 9 filewirte1.writelines(["daydayup\n","lreanlreanstart"]) 10 filewirte1.close() 11 12 #在不關閉文件的情況下讀取文件的內容 13 filewirte1 = open('a.txt',"r+") 14 filewirte1.write("lreanlreanstart") 15 16 filewirte1.seek(0,0) #把游標定位到開始,讀取全部文件內容 17 str = filewirte1.read() 18 print(str) 19 20 # s = filewirte1.seek(0,2) #把游標定位到文件末尾列印有多少字元 21 # print(s) 22 23 filewirte1.seek(0,0) 24 # filewirte1.truncate() #刪除時需先定位到開頭位置,刪除的是全部 25 filewirte1.truncate(2) #刪除時需先定位到開頭位置,保留前兩位字元 26 27 filewirte1.close()
# 思路:
# 1、看到遍歷首先想到for迴圈
# 2、迴圈需要有要迴圈的參數,os.listdir()獲取文件及其目錄
# 3、列印出完整的路徑需要進行路徑的拼接
# 4、需要os.path.join進行路徑的拼接
1 def print_dir(filepath): 2 for i in os.listdir(filepath): #獲取目錄中的文件及子目錄列表 3 print(os.path.join(filepath,i)) #把路徑組合起來 4 filepath = "C:\Program Files" 5 print_dir(filepath)
# 思路:
# 1、這題比上一題多了一步,就是還需要遍歷目錄及其下邊的文件進行列印
# 2、首先想到遞歸查詢
# 3、看到上題已經遍歷出來了,我再遍歷一下是否是目錄,再遞歸下
# 4、把文件下所有的文件和目錄進行拼接列印
# 5、遍歷是否是一個文件,想到os.path.isdir判斷是否為目錄的方法
# 6、有了方法就判斷下是就可以啦,讓我想到了if語句
# 7、if判斷完了直接調下主函數就達到遍歷的效果啦
1 def show_dir(filepath): 2 for i in os.listdir(filepath): 3 path = (os.path.join(filepath,i)) 4 print(path) 5 if os.path.isdir(path): 6 show_dir(path) 7 8 filepath = "C:\Program Files\Internet Explorer" 9 show_dir(filepath)
# 思路:
# 準備:根據課上練習的遍歷目錄及其下的文件
# 1、遞歸顯示指定目錄及下的文件
# 2、判斷文件是否是以.html尾碼,再進行列印
1 def print_dir(filepath): 2 for i in os.listdir(filepath): 3 path= os.path.join(filepath,i) 4 # print(path) 5 if os.path.isdir(path): 6 print_dir(path) 7 if path.endswith(".html"): 8 print(path) 9 10 filepath = "D:\PycharmProjects\cs" 11 print_dir(filepath)
# 另外!!!
string = "abcde"
print(string[0:5:1]) #列印下標從0到4的字元,步長為正向 1
# 思路:
#zheng函數列印從0到4,步長為整向+1。相當於range(3)列印0,1,2
1 def zheng(string): 2 rt = '' 3 for i in range(0, len(string), 1): 4 print(i) 5 rt += string[i] 6 return rt 7 string = "abcd" 8 print(zheng(string))
# 思路:
#len(string1)-1是取字元串的最後一位,返回取值步長為-1
#中間一位-1其實只取值到0,達到字元串的反轉
1 def dao(string): 2 tr = '' 3 for i in range(len(string1)-1, -1, -1): 4 print(i) 5 tr += string1[i] 6 return tr 7 string1 = "qwert" 8 print(dao(string1))
#字元串的反轉另外一種方式:
1 def reverse_str(string): 2 return string[::-1] 3 string = "abcd" 4 print(reverse_str(string))