Python Day 18 time模塊、datetime模塊、os模塊、os.path模塊

  閱讀目錄python

    時間模塊(time、datetime)shell

    日曆模塊(calendar)數據庫

    sys模塊windows

    os模塊架構

    os.path模塊app

  ##時間模塊函數

# #time模塊:時間戳、結構化的時間、格式化的字符串時間
# #一、時間戳(timestamp):一般來講,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。咱們運行「type(time.time())」,返回的是float類型。
# #二、格式化的時間字符串(Format String)
# #三、結構化的時間(struct_time):struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天,是不是夏令時)
# #四、英文顯示   'Mon Jan 26 00:52:24 1970' ----》format默認爲:"%a %b %d %H:%M:%S %Y"

 

 

 

 

import datetime
import time
#時間戳 1557227892.3337016
print(time.time())
#將時間戳轉換爲本地時區結構化時間元組 struct_time
print(time.localtime())
#將時間戳轉換爲UTC時區結構化時間元組 struct_time
print(time.gmtime())
#將一個struct_time轉化爲時間戳 ---> 1557229253.0
print(time.mktime(time.localtime()))
#結構化時間轉爲格式化輸出時間 2019-05-07 19:38:23
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
#把一個格式化時間字符串轉化爲struct_time。實際上它和strftime()是逆操做
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=19, tm_min=38, tm_sec=23, tm_wday=1, tm_yday=127, tm_isdst=-1)
print(time.strptime('2019-05-07 19:38:23','%Y-%m-%d %X'))
#結構化時間轉爲英文格式輸出、無參默認傳入結構化時間time.localtime()
print(time.asctime())#Tue May  7 19:48:26 2019
print(time.asctime(time.localtime()))
print(time.asctime(time.localtime(time.time())))
#將時間戳轉爲英文格式輸出、無參默認傳入時間戳time.time()
print(time.ctime())
print(time.ctime(time.time()))


#得到當前時間 2019-05-07 19:56:56.738921
print(datetime.datetime.now())
#時間戳格式time.time()轉爲日期格式 2019-05-07
print(datetime.date.fromtimestamp(time.time()))
#得到三天後時間2019-05-10 20:03:08.253856
print(datetime.datetime.now() + datetime.timedelta(3))
#得到三天前的時間2019-05-04 20:03:54.933696
print(datetime.datetime.now() + datetime.timedelta(-3))
#得到當前時間+3小時 2019-05-07 23:04:29.103221
print(datetime.datetime.now() + datetime.timedelta(hours=3))
#得到當前時間+30分鐘 2019-05-07 20:35:01.856802
print(datetime.datetime.now() + datetime.timedelta(minutes=30))

c_time  = datetime.datetime.now()
print(c_time.replace(minute=3,hour=2)) #時間替換

print( datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
print(datetime.datetime(2014, 8, 15, 9, 57, 52, 779893))
print(datetime.datetime.today())#2019-05-07 20:13:31.223521
%y 兩位數的年份表示(00-99%Y 四位數的年份表示(000-9999%m 月份(01-12%d 月內中的一天(0-31%H 24小時制小時數(0-23%I 12小時制小時數(01-12%M 分鐘數(00=59%S 秒(00-59%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天爲星期的開始
%w 星期(0-6),星期天爲星期的開始
%W 一年中的星期數(00-53)星期一爲星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號自己

  ##日曆模塊(calendar)測試

 

import calendar
#判斷是不是閏年
print(calendar.isleap(2019))
#查看某年某月日曆
print(calendar.month(2018,8))

c = calendar.calendar(2017)
c = calendar.TextCalendar()
c = calendar.HTMLCalendar()
print(c)
#返回兩個整數。第一個是該月的首日所在星期的日期碼(0~6),每週的起始日期碼0(星期一)到6(星期日),第二個是該月的天數(28-31)
print(calendar.monthrange(2019, 5))
#查看某年某月某日是星期幾
print(calendar.weekday(2017, 7, 23))

 

  ##sys模塊spa

 

#1 sys.argv           命令行參數List,第一個元素是程序自己路徑
#2 sys.exit(n)        退出程序,正常退出時exit(0)
#3 sys.version        獲取Python解釋程序的版本信息
#4 sys.maxint         最大的Int值
#5 sys.path           返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值
#6 sys.platform       返回操做系統平臺名稱

#示例
import sys
import os.path
print(sys.argv)#['C:/untitled1/第十八天/第十八天.py']
def f1():
    print('執行自動化打印方法')
def f2():
    print('執行自動化移動方法')
def copy_file(old,new):
    # print('將%s複製成%s'%(old,new))
    new_file = os.path.join(new,'new.py')
    with open(old,'rb') as rf,open(new_file,'wb') as wf:
        for line in rf:
            wf.write(line)
cmd_map ={
    'print':f1,
    'move':f2,

}
if len(sys.argv) >1:
    cmd=sys.argv[1]
    if cmd in cmd_map:
        cmd_map[cmd]()
if len(sys.argv) ==4:
    if sys.argv[1] =='copy_file' :
        old = sys.argv[2]
        new = sys.argv[3]
        # copy_file(old,new)

        if os.path.isfile(old) and os.path.isdir(new):
            copy_file(old,new)
#在命令行輸入

python3 C:\untitled1\第十八天\第十八天.py print python3 C:\untitled1\第十八天\第十八天.py copy_file C:\untitled1\user_info C:\untitled1\第十八天

 

  ##os.path 模塊操作系統

 

#執行文件的當前路徑:__file__
#返回path規範化的絕對路徑:os.path.abspath(path)  
#將path分割成目錄和文件名二元組返回:os.path.split(path)  
#上一級目錄:os.path.dirname(path) 
#最後一級名稱:os.path.basename(path)
#指定路徑是否存在:os.path.exists(path)
#是不是絕對路徑:os.path.isabs(path)
#是不是文件:os.path.isfile(path)
#是不是路徑:os.path.isdir(path) 
#路徑拼接:os.path.join(path1[, path2[, ...]])
#最後存取時間:os.path.getatime(path)
#最後修改時間:os.path.getmtime(path)
#目標大小:os.path.getsize(path)

normcase函數
在Linux和Mac平臺上,該函數會原樣返回path,在windows平臺上會將路徑中全部字符轉換爲小寫,並將全部斜槓轉換爲飯斜槓。
>>> os.path.normcase('c:/windows\\system32\\')  
'c:\\windows\\system32\\'  
  
normpath函數
規範化路徑,如..和/
>>> os.path.normpath('c://windows\\System32\\../Temp/')  
'c:\\windows\\Temp'  
 
 
>>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
>>> print(os.path.normpath(a))
/Users/jieli/test1
 

 

import os.path
#C:/untitled1/第十八天/第十八天.py
print(__file__)
#C:\untitled1\第十八天\n第十八天.p
res = os.path.abspath('C:\\untitled1\第十八天\第十八天.py')
res1 = os.path.abspath('C:/untitled1\第十八天\第十八天.py')
res2 = os.path.abspath(r'C:\untitled1\第十八天\第十八天.py')
res3 = os.path.abspath('C:/untitled1\第十八天\\n第十八天.py')


print(res3)

#('C:\\untitled1', '第十八天')
res=os.path.split(r'C:\untitled1\第十八天')
print(res)
print(res[1])#第十八天

#上一級C:/untitled1/第十八天
print(os.path.dirname(__file__))
print(os.path.dirname(os.path.dirname(__file__)))#C:/untitled1

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
print(BASE_DIR)#該項目根目錄是在執行時自動獲取的當前項目根目錄的絕對路徑
#案例:項目根目錄的應用場景
import sys
sys.path.append(BASE_DIR)#全部的導包/模塊兜裏來BASE_DIR
print(sys.path)

#最後一級名稱   第十八天.py
print(os.path.basename(r'C:\untitled1\第十八天\第十八天.py'))
#路徑拼接
new_path = os.path.join(BASE_DIR,'第十七天','pgk','test.py')
print(os.path.exists(new_path)) #判斷是否存在
print(os.path.isabs(new_path))#判斷是不是絕對路徑
print(os.path.isfile(new_path))#判斷是不是文件
print(os.path.isdir(new_path))#判斷是不是文件夾/目錄
#獲取文件大小
print(os.path.getsize(r'C:\untitled1\第十八天\new.py'))
#
file_path = r'C:\untitled1\第十八天\第十八天.py'
print(os.path.getctime(file_path))#建立時間
print(os.path.getatime(file_path))#訪問時間
print(os.path.getmtime(file_path))#修改時間

  ##os模塊

 

#生成單級目錄:os.mkdir('dirname')
#生成多層目錄:os.makedirs('dirname1/.../dirnamen2')
#重命名:os.rename("oldname","newname") 
#工做目錄:os.getcwd()
#刪除單層空目錄:os.rmdir('dirname')
#移除多層空目錄:os.removedirs('dirname1/.../dirnamen') 
#刪除文件:os.remove(file)
#列舉目錄下全部資源:os.listdir('dirname')
#路徑分隔符:os.sep
#行終止符:os.linesep
#文件分隔符:os.pathsep
#操做系統名:os.name
#操做系統環境變量:os.environ
#執行shell腳本:os.system() 

#示例
import os
# os.mkdir('abc')#在當前文件所在路徑下建立abc文件夾
# os.mkdir('D:\\abc')#在絕對路徑下建立
#不能遞歸建立,文件夾c前面不存在報錯
# os.mkdir('a/b/c')
#遞歸建立
# os.makedirs(r'a\b\c')
#重命名
# os.rename('a','aa')
# #刪除空目錄,不空沒法刪除
# os.rmdir('aa/b/c')
# os.removedirs('aa/b/c')
#刪除文件,
os.remove()
 

 

  ##跨文件移動文件

import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)

def move_file(file, folder):
    if not (os.path.exists(file) and os.path.isfile(file)):
        print('文件不存在或非法')
        return False
    if not os.path.exists(folder):
        os.makedirs(folder)
    file_name = os.path.split(file)[1]
    # file_name = os.path.basename(file)
    new_file = os.path.join(folder, file_name)

    with open(file, 'rb') as rf, open(new_file, 'wb') as wf:
        for line in rf:
            wf.write(line)

    os.remove(file)

# 將目標文件夾下的目標文件移動到指定文件夾下
file = os.path.join(BASE_DIR, 'part5', 'mm.py')
folder = os.path.join(BASE_DIR, 'part6', 'abc')
move_file(file, folder)

  ##遞歸刪除的思路

def delete_dir(folder):
    for path in os.listdir(folder):
        # 若是path是文件夾 delete_dir(path)
        # 若是是文件os.remove(path)
        pass
    # for走完了表明folder內部刪空了,能夠刪folder

  ##遞歸遍歷打印目標路徑中全部的txt文件

def print_txt(folder):
    if not os.path.exists(folder) or os.path.isfile(folder):
        return
    for path in os.listdir(folder):
        file_path = os.path.join(folder, path)
        if os.path.isfile(file_path) and file_path.endswith('.txt'):
            print(path)
        elif os.path.isdir(file_path):
            print_txt(file_path)  # 遞歸


target_path = os.path.join(BASE_DIR, 'part6', 'target')
print_txt(target_path)

  ##項目開放週期

1.調研
2.需求分析
3.架構師完成項目demo,完成項目架構
4.分工
5.寫代碼
6.白盒黑盒測試
7.項目審覈發佈 => 項目 -> 產品
#項目下文件名稱及做用bin: 可執行文件,入口,入口也能夠放在項目根目錄下
core: 核心代碼
db:數據庫相關文件
interface:接口
lib:包、模塊、第三方文件夾
log:日誌
setting:配置
static:靜態文件
相關文章
相關標籤/搜索