日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python笔记-1(import导入、time/datetime/random/os/sys模块)

發布時間:2023/12/20 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python笔记-1(import导入、time/datetime/random/os/sys模块) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python筆記-6(import導入、time/datetime/random/os/sys模塊)

一、了解模塊導入的基本知識

此部分此處不展開細說import導入,僅寫幾個點目前的認知即可。其它內容待日后有深入理解了再來細說

1、import可以導入的兩種不同的內容

1.1 *.py文件結尾的文件

1.2 package文件

package和文件夾圖標類似,package中又__init__.py的文件

2、模塊導入的幾種導入方式

2.1 from xxx import xxx as xxx?

2.2 from xxx import xxx as xxx as xxx 別名

2.3 import xxx

3、import 和 from xxx import 的區別

import xxx的本質是執行py文件,import package是執行__init__.py

from xxx import xxx 的本質是將xxx部分的內容復制到本地,進行調用。

4、需要重點掌握給sys(python解釋器)添加環境變量的方法

4.1 os.path.abs(文件)

4.2 os.path.dirname(絕對路徑)

4.3 sys.path.append()/sys.path.insert()

?

二、time模塊-->時間模塊

1、要熟悉時間的三種表示方式

1.1、格式化字符串 ‘2018-2-1 11:11:12’

???此處的格式我們可以隨意去自定義,其實質是按照固定的格式,從時間的9元組中獲取需要的變量,根據定義的格式輸出字符串

1.2、時間戳

一串數字,用來表示和1970年的時間間隔,單位為s。

注意點:一個時間戳所換算成的時間九元組是固定的。但是,根據時區的不同,python會進行相應的轉換,轉換成當地的時間。在熟悉了這個情況后,在后面的時間表示方式的轉換中,要明確我要轉換成的是標準時間還是當地時間。

1.3、元組 struct_time 9個元素

year (including century, e.g. 1998)?

month (1-12)

day (1-31)

hours (0-23)

minutes (0-59)

seconds (0-59)

weekday (0-6, Monday is 0)一周第幾天注意星期一是第0天

Julian day (day in the year, 1-366)一年第幾天,從1開始計

DST (Daylight Savings Time) flag (-1, 0 or 1)是否是夏令時,0代表不是,1代表是

例子

?
1 time.struct_time(tm_year=2017, tm_mon=12, tm_mday=31, tm_hour=23, tm_min=27, tm_sec=2, tm_wday=6, tm_yday=365, tm_isdst=0)

4、time模塊的幾個變量

4.1 timezone?

表示世界標準時間utc和本地時間的差值,單位為秒。中國的時區比時間標準時間快8小時。

utc - (utc+8)

?
1 2 3 4 5 6 7 >>> time.timezone -28800 >>> 28800/3600 8.0

4.2 altzone

UTC和本地夏令時直接的差值,單位為s 我們不使用夏令時,所以此處不做深究,了解即可

?
1 2 3 >>> time.altzone #夏令時和utc的時間差值 -32400

4.3 time.daylight

是否使用了夏令時,0為不使用

?
1 2 3 >>> time.daylight 是否使用了夏令時 0

5、time的函數

5.1 time.time()?獲取時間戳

此處獲取的時間戳為utc標準時間與1970的時間間隔。

5.2 time.sleep()

延時多少秒,單位為秒

5.3 time.gmtime()?

gmtime() -- convert seconds since Epoch to UTC tuple

將時間戳轉換為utc時間

5.4 time.localtime()

localtime() -- convert seconds since Epoch to local time tuple

將時間戳轉換成本地時間

?
1 2 3 4 5 6 7 8 9 10 11 12 13 >>> time.time() 1520614121.487381 >>> time.gmtime(time.time()) time.struct_time(tm_year=2018, tm_mon=3, tm_mday=9, tm_hour=16, tm_min=49, tm_sec=4, tm_wday=4, tm_yday=68, tm_isdst=0) >>> time.localtime(time.time()) time.struct_time(tm_year=2018, tm_mon=3, tm_mday=10, tm_hour=0, tm_min=49, tm_sec=14, tm_wday=5, tm_yday=69, tm_isdst=0) >>>

此程序的說明:注意time.gmtime()與time.localtime()的對比

Time.time()為獲取一個時間戳,需要明確 時間戳其實就是utc與1970的時間差

Time.gmtime(time.time())將時間戳轉換為utc九元組

Time.localtime(time.time())將時間戳轉換為本地時間的九元組,實際就是轉換為標準的九元組后,根據timezone進行換算的

5.5 如何取用時間struct_time-9元組的值

時間元組賦值給變量,變量用.來引用

?
1 2 3 4 5 6 7 8 9 10 11 import time x=time.gmtime() print(x) print(x.tm_year,x.tm_yday) ---------------------------------------- time.struct_time(tm_year=2018, tm_mon=2, tm_mday=26, tm_hour=17, tm_min=22, tm_sec=23, tm_wday=0, tm_yday=57, tm_isdst=0) 2018 57

5.6 ?strftime()?

將元組轉換為標準格式輸出

這里的元組默認為localtime,如果給出元組,則從元組中取值

Time.strftime(格式,元組)

?
1 2 3 >>> time.strftime('%Y %m %d %X') '2018 02 10 01:21:43'

?

5.7 strptime()

將文本格式轉換為元組

Time.strptime(文本,格式)

?
1 2 3 4 5 >>> time.strptime('2018 02 10 01:21:43','%Y %m %d %X') time.struct_time(tm_year=2018, tm_mon=2, tm_mday=10, tm_hour=1, tm_min=21, tm_sec=43, tm_wday=5, tm_yday=41, tm_isdst=-1) >>>

注意:tm_isdst這個部分,轉換之后夏令時為-1

5.8 Time.ctime(時間戳)

會轉換為本地時區的 文本形式時間

?
1 2 3 >>> time.ctime(time.time())#默認傳入time.time() 'Sat Mar 10 01:31:45 2018'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

5.9?Time.asctime(time.localtime())默認傳入localtime

從元組取值轉換成固定的格式輸出,和strftime類似

?
1 2 3 4 5 6 7 8 9 10 11 >>> time.asctime(time.gmtime()) 'Fri Mar? 9 17:33:26 2018' >>> time.asctime(time.localtime()) 'Sat Mar 10 01:33:32 2018' >>> time.asctime() 'Sat Mar 10 01:33:39 2018'

5.10 time.mktime() -- convert local time tuple to seconds since Epoch

本地的時間的元組轉換為時間戳

Localtime->轉換為標準的時間戳->utc->local

?
1 2 3 4 5 >>> time.localtime(time.mktime(time.localtime())) time.struct_time(tm_year=2018, tm_mon=3, tm_mday=10, tm_hour=1, tm_min=37, tm_sec=31, tm_wday=5, tm_yday=69, tm_isdst=0) >>>

5.11 tzset() -- change the local timezone

改變timezone變量,調整時區,一般不使用

?

三、datetime模塊的使用

1、獲取當前時間的方法 datetime.datetime.now()

以字符串形式輸出

?
1 2 3 print(datetime.datetime.now())當前時間 2018-01-04 02:11:37.867479

2、知道datetime.datetime.now()的類型

?
1 <class 'datetime.datetime'>

3、定義輸出格式 與strftime結合

?
1 2 3 4 5 6 7 print(datetime.datetime.now()) print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))<br>----------------------------------------- 2018-03-10 09:46:28.106559 2018-03-10 09:46:28

4、str格式時間轉成datetime.datetime類

?
1 2 3 4 5 6 7 8 d1 = datetime.datetime.strptime('2015-03-05 17:41:20', '%Y-%m-%d %H:%M:%S') d2 = datetime.datetime.strptime('2015-03-02 17:31:20', '%Y-%m-%d %H:%M:%S') Print(d1) -------------------------------- 2015-03-05 17:41:20

5、計算時間差的方法

?
1 2 3 4 5 6 7 8 9 10 11 for i in range(20): ???d3 = datetime.datetime.now() ???print(d3-d1) ???time.sleep(1)<br>---------------------------------- 2015-03-05 17:41:20 1100 days, 16:05:16.123119

6、與time.timedelta()結合計算時間

?
1 2 3 4 5 6 7 print(d1+datetime.timedelta(3)) 三天后的時間 print(d1+datetime.timedelta(-3)) 三天前的時間 Primt(datetime.now+datetime.timedelta(hour=3)) 三小時后的時間 Primt(datetime.now+datetime.timedelta(second0=-3)) 三秒前的時間

7、時間的修改與替換

?
1 2 3 4 5 6 7 8 9 10 11 12 13 nownow=datetime.datetime.now() print(type(nownow)) nownow.replace(year=1999) print(nownow,nownow.replace(year=1999)) ----------------- ?<class 'datetime.datetime'> 2018-01-04 02:31:29.952321 1999-01-04 02:31:29.952321

  注意:除非重新賦值給新的變量 不然replace不會去改變變量本身 和字符串類似

?

四、random 模塊,隨機數模塊的使用

?

1、random.random()

生成隨機浮點數范圍在0-1之間?包括0不包括1

?

?
1 2 >>> random.random() 0.11288859525093142

?

2、random.randint()?

生成隨機整數,前數字都包含,即生成的隨機數前后數字都可能出現

?
1 2 3 4 5 6 >>> random.randint(1,4) 1 >>> random.randint(1,4) 3 >>> random.randint(1,4) 4

?

3、random.randrange()

顧頭不顧尾的range,可以設置步長,不設置step 則step為1.

randint不能設置步長step

?

?
1 2 3 4 5 6 >>> random.randrange(0,11,2) 4 >>> random.randrange(0,11,2) 8 >>> random.randrange(0,11,2) 0

?

4、random.choice()

放入一個非空序列 列表 字符串 元組(有序的,放入字典、集合會報錯)

?

?
1 2 3 4 5 6 7 8 9 10 11 12 >>> random.choice((1,2,3,4)) #元組 3 >>> random.choice((1,2,3,4)) 2 >>> random.choice(['a','b','c']) 'c' >>> random.choice(['a','b','c']) 'a' >>> random.choice('python') #字符串 'y' >>> random.choice('python') 'o'

?

5、random.sample()取多個,與choice類似,choice取1個,sample取多個

?放入一個非空序列,第二個參數表示抽取多少個,組成列表

?

?
1 2 3 4 >>> random.sample(['a','b','c'],2) ['b', 'c'] >>> random.sample('python',6) ['o', 't', 'h', 'p', 'y', 'n']

?

6、random.uniform()?指定區間的浮點數

和random.random做對比?random只是0和1之間

?

?
1 2 3 4 >>> random.uniform(1,4) 1.5855347763788947 >>> random.uniform(1,4) 3.890550444129729

?

7、洗牌功能 random.shuffle()對列表進行亂序

?

?同時要注意是他可以直接改變列表 不需要重新賦值出來

?

?
1 2 3 4 5 >>> a=[1,2,3,4] >>> random.shuffle(a) >>> a ----------------------------- [4, 1, 3, 2]

?

8、生成驗證碼的程序一則

?

思路 ?

? ? random.randint(0-9)

?

? ? random.randint(65-90)

?

? ? Chr(數字)->字符

?

????字符串相加 ‘abc’+’d’=’abcd’

?

?
1 2 3 4 5 6 7 8 9 10 def yanzheng(): ???yanzhengma='' ???for i in range(4): ???????shuzi_or_zimu = random.randint(0, 1) ???????if shuzi_or_zimu: ???????????yanzhengma+=str(random.randint(0,9)) ???????else: ???????????yanzhengma+=chr(random.randint(65,90)) ???print(yanzhengma)<br>for i in range(5): ??????yanzheng()<br>----------------------------

1F47 YR31 R80M 66FG F6GS 

五、os模塊

os模塊分兩個部分來講:1、?常用函數 2、os.path

(一)os的常用函數

1、os.getcwd()?相當于pwd

獲取當前python程序運行的路徑 你這個.py文件在哪 他就顯示哪

2、os.chdir()

相當于linux的cd 到相應目錄項進行操作

注意的是chdir的時候

對于目錄\的兩種處理方式

2.1、\\

2.2、r

>>> os.getcwd() 'C:\\Users\\Raytine' >>> os.chdir('d:\') File "<stdin>", line 1 os.chdir('d:\') ^ SyntaxError: EOL while scanning string literal >>> os.chdir('d:\\') >>> os.getcwd() 'd:\\' >>> os.chdir(r'c:\') File "<stdin>", line 1 os.chdir(r'c:\') ^ SyntaxError: EOL while scanning string literal >>> os.chdir(r'c:\\') >>> os.chdir(r'c:\a') >>> os.getcwd() 'c:\\a'

注意:為什么>>> os.chdir(r'c:\')報錯 ,os.chdir(r'c:\')

3、os.curdir 當前目錄??os.pardir 上一級目錄

>>> os.curdir #只是個變量,并不能引用 '.' >>> os.curdir '.' >>> os.pardir

注意點: ?os.curdir 和os.pardir 都沒有()引用,不是函數

4、os.makedirs(r'c:\a\b\c') 遞歸創建

5、os.removedirs(r'c:\a\b\c')遞歸刪除

刪除原則:目錄為空繼續刪,不能用來刪文件及刪除非空目錄

>>> os.removedirs(r'c:\a\b\1.txt') Traceback (most recent call last):File "<stdin>", line 1, in <module> File "D:\Python36\lib\os.py", line 238, in removedirs rmdir(name) NotADirectoryError: [WinError 267] #目錄名稱無效。: 'c:\\a\\b\\1.txt' >>> os.removedirs(r'c:\a\b\c') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\Python36\lib\os.py", line 238, in removedirs rmdir(name) OSError: [WinError 145] #目錄不是空的。: 'c:\\a\\b\\c' >>> os.removedirs(r'c:\a\b\c')

6、os.mkdir() 創建目錄

不會遞歸,如果前面不存在則創建不成功

7、os.rmdir()刪除目錄

不會遞歸,為空刪除

8、os.listdir(os.curdir)?

列出文件夾下面的所有文件 以列表形式列出

>>> os.listdir('.') ['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python.pdb' ]

9、os.remove('filename') 刪除文件

10、os.rename('oldname','newname')

可以改文件夾名字以及文件的名字

>>> os.makedirs(r'c:a\b\c\d') >>> os.rename(r'c:a\b\c\d',r'c:a\b\c\e')

11、os.stat() 查看文件的屬性

>>> os.stat(r'c:a\b\c\e') os.stat_result(st_mode=16895, st_ino=1125899906960658, st_dev=2766884258, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1519743765, st_mtime=1519743765, st_ctime=1519743765)

12 os.sep 路徑分隔符 windows \\ linux /

13 os.linesep 換行符 windows \r\r linux \n

14 os.pathsep 分割文件路徑的分隔符 ;

>>> os.pathsep ';' >>> os.linesep '\r\n' >>> os.sep '\\' >>>

注意點:都沒有括號引用

15、os.environ 輸出系統的環境變量?為一個字典

和sys.path 不同?sys.path為python的環境變量

environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\linyuming.ESG\\AppData\\Roaming', 'WINDIR': 'C:\\Windows'})

16.os.name 系統名稱

windows 為‘nt’??獲取系統name針對不同系統做不同操作,增加兼容性

Windows,它是'nt',而對于Linux/Unix用戶,它是'posix'。

>>> os.name 'nt'

17.os.system() 用來執行系統指令

>>> os.system('dir')驅動器 D 中的卷沒有標簽。 卷的序列號是 D2E8-6B21 D:\Python36 的目錄2017/12/19 02:50 <DIR> . 2017/12/19 02:50 <DIR> .. 2017/12/19 02:50 <DIR> DLLs 2017/12/19 02:50 <DIR> Doc 2017/12/19 02:48 <DIR> include2017/12/19 02:50 <DIR> libs

?

(二)os.path 模塊

1、os.path.abspath()

獲取文件的絕對路徑

2、os.path.split()?切割文件路徑

切割成目錄+文件的形式

print(os.path.split(r'c:\a\b\c\d')) #不論文件是否存在 ('c:\\a\\b\\c', 'd')# 返回二元組,第一部分為目錄 第二部分為文件名 #Split=dirname+basename

3、os.path.dirname(r'c:\a\b\c\d.txt')獲取文件的目錄

不論這個文件是否存在,實質就是切割路徑

4 、os.path.basename(r'c:\a\b\c\d.txt') 獲取文件名

這個和dirname相對,basename只取文件名

>>> os.path.dirname(r'c:\a\b\c\d.txt') 'c:\\a\\b\\c' >>> os.path.basename(r'c:\a\b\c\d.txt') 'd.txt' >>> os.path.split(r'c:\a\b\c\d.txt') ('c:\\a\\b\\c', 'd.txt') #linux windows 對于路徑分隔符定義不通 所以運行結果有區別 #上面的路徑都可以不存在

5、os.path.exists()判斷路徑是否存在

可以判斷文件 或者文件夾

>>> os.path.exists(r'c:\a\b\c\d.txt') False

6、os.path.is* 判斷

>>> os.path.isfile(r'c:\a\123') False #文件不存在 false >>> os.path.isfile(r'c:\a\b') False #不是文件 false >>> os.path.isfile(r'c:\a\b\1.txt') True #存在且是文件 true >>> os.path.isabs(r'c:\\') True >>> os.path.isabs(r'c:') False #寫的格式不對,不是絕對路徑則返回false >>> os.path.isabs(r'c:\\ajsdfiouoiw') True #不存在也返回true

isabs(s)

Test whether a path is absolute

isdir = _isdir(path, /)

Return true if the pathname refers to an existing directory.

isfile(path)

Test whether a path is a regular file

islink(path)

Test whether a path is a symbolic link.

This will always return false for Windows prior to 6.0.

ismount(path)

Test whether a path is a mount point (a drive root, the root of a

share, or a mounted volume)

7、os.path.join 將多個名字組合成路徑

拼接過程不能帶分割符 不然會出現問題

>>> os.path.join('root','tmp','abc') 'root/tmp/abc' >>> os.path.join(r'/','root','tmp','abc') '/root/tmp/abc'

8、getatime/getctime獲取文件的時間

>>> time.localtime(os.path.getatime(r'c:\a\b\1.txt')) time.struct_time(tm_year=2018, tm_mon=2, tm_mday=27, tm_hour=23, tm_min=33, tm_sec=57, tm_wday=1, tm_yday=58, tm_isdst=0)os.path.getatime(file) #輸出最近access訪問時間1318921018.0 os.path.getctime(file) #輸出文件create創建時間 os.path.getmtime(file) #輸出最近修改時間 #返回的是時間戳

?

?

六、sys模塊-和解釋器相關的信息及操作

該部分內容較少。

sys.version 獲取python解釋器的版本信息

sys.stdout 標準輸出

sys.argv 獲取參數 第一個參數是py文件路徑

sys.exit()標準退出exit(0)

print(sys.version)#輸出python的信信息 print(sys.argv)#用來獲取參數 第一個元素是程序路徑 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] ['F:/my_python_file/20180113_sys_shutil.py']

轉載于:https://www.cnblogs.com/di2wu/p/8940019.html

總結

以上是生活随笔為你收集整理的python笔记-1(import导入、time/datetime/random/os/sys模块)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。