python的file,time的一些知識點
1,open 和 with open的區別
open是手動開啟,不需要的就需要關閉,不關閉可能會發現未知的錯誤
with open是自動開啟,不需要的python會自動關閉
2,遍歷文字資料
files = open('python.txt','r',encoding='utf-8')
for line in files :
print(line)
files.close()`
這樣相對來說沒有那麼佔用資源,比read 或者readlines一次性讀取 沒那麼佔用資源
但是 read 和readlines在整體可能處理速度要快,因為for需要多次讀取資料
files = open('python.txt','r',encoding='utf-8') content = files.readlines() for line in content : print(line) files.close()
3,seek 函式,指標偏移量
file.seek(0) 的作用是可以實現反覆讀取資料,而不需要反覆開啟關閉檔案 ,這是一個很好的技巧
4,os 中資料夾的操作
os.getcwd() #當前目錄
os.listdir() #列印當前資料夾內的檔案
os.listdir(“F:\”) #列印指定資料夾內的檔案
#判斷是否是一個檔案
os.path.isfile("F\\pt.txt") os.path.exists("F:\\") os.rename("","") 吧目錄路徑和檔名分開 os.remove("F:\\tete.txt") #建立資料夾 os.mkdir("F:\\package") os.mkdirs("") os.path.split("F:\\tt.txt")
# 檢視檔名
# def basename(p):
# """Returns the final component of a pathname"""
# return split(p)[1]
# print(os.path.basename(path)) #注意 如果檔案 為 "D:/nihao/nihao" 那麼他輸出的是 nihao
# print(os.path.dirname(path))
以下程式碼實現 建立指定檔案中的目錄,如果包含檔案,就建立檔案,不包含就只建立目錄
# "D:/nihao/tmp.txt" 或者 實現 "D:/nihao" 型別的建立 path = "D:/nihao/tmp.txt" tuple_1 = os.path.split(path) print(tuple_1) if "." in tuple_1[1]: os.makedirs(tuple_1[0]) fo = open(path,"w") fo.close() else: os.makedirs(path)
#檔案的遍歷
os.walk()獲得三組資料(rootdir, dirname,filnames)
def file_path(file_dir):
for root, dirs, files in os.walk(file_dir):
print(root, end=' ') # 當前目錄路徑,,注意 這裡的end = ' '表示print輸出的時候不換行
print(dirs, end=' ') # 當前路徑下的所有子目錄
print(files) # 當前目錄下的所有非目錄子檔案
file_path("D:\PLSQL")
#獲取一個資料夾下面所有的檔案的路徑
def find_file(filepath):
files = os.listdir(filepath)
for fi in files:
# 在這裡join的目的是吧父路徑新增進去
fi_d = os.path.join(filepath,fi)
if os.path.isdir(fi_d):
find_file(fi_d)
else:
print(os.path.join(filepath,fi_d))
find_file("D:\PLSQL\DataGenerator")
3 time模組的用法
time.altzone 返回格林時間
time.asctime() 獲得時間元組 可以給他提供一個引數
time.clock() windows 和linux不一樣
常用
time.ctime() 獲取當前時間
常用
time.time() 獲取時間戳,從1970年到現在的秒數
time.gmtime() 返回一個時間元組 返回的事格林威治的時間元祖
常用
time.localtime()
#時間戳轉換成時間元祖,將時間元祖轉換成時間字串
times = time.time()
tmp = time.localtime(times)
localtime返回一個時間元組:
索引 欄位 值
0 4位數, 表示年份 2018,2019…
1 月份 1 ~ 12
2 日期 1 ~ 31
3 小時 0 ~ 23
4 分鐘 0 ~ 59
5 秒 0 ~ 61(60或61是閏秒)
6 星期幾 0 ~ 6(0是星期一)
7 一年的第幾天 1 ~ 366(朱利安日)
8 夏令時 -1,0,1,-1表示庫確定DST
print(time.strftime("%Y-%m-%d %H:%M:%S",tmp))
#吧時間字串轉換成時間元祖
times = "2017-12-25 12:12:12"
tmp = time.strptime(times,'%Y-%m-%d %H:%M:%S')
print(tmp)
#把時間元祖轉換成時間戳
time.mktime(tmp)
time.sleep(5)#時間睡眠5秒
練習題目:獲得三天前的時間
threAgo = time.time() - 60*60*24*3
print(time.localtime(threAgo))
#---------------------------切換時間格式 --------------------------
“2017-11-24 17:30:00” 轉換成 “2017/11/24 17:30:00”
t = "2017-11-24 17:30:00"
#先轉換為時間陣列,然後轉換為其他格式
timeStruct = time.strptime(t, "%Y-%m-%d %H:%M:%S")
strTime = time.strftime("%Y/%m/%d %H:%M:%S", timeStruct)
print(strTime)
----------------利用datetime來獲取時間
import datetime
i = datetime.datetime.now()
print ("當前的日期和時間是 %s" % i)
print ("ISO格式的日期和時間是 %s" % i.isoformat() )
print ("當前的年份是 %s" %i.year)
print ("當前的月份是 %s" %i.month)
print ("當前的日期是 %s" %i.day)
print ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) )
print ("當前小時是 %s" %i.hour)
print ("當前分鐘是 %s" %i.minute)
print ("當前秒是 %s" %i.second)