day5模塊學習 -- os模塊學習
python基礎之模塊之os模塊
os模塊
os模塊的作用:
os,語義為操作系統,所以肯定就是操作系統相關的功能了,可以處理文件和目錄這些我們日常手動需要做的操作,就比如說:顯示當前目錄下所有文件/刪除某個文件/獲取文件大小……
另外,os模塊不受平臺限制,也就是說:當我們要在linux中顯示當前命令時就要用到pwd命令,而Windows中cmd命令行下就要用到這個,額...我擦,我還真不知道,(甭管怎麽著,肯定不是pwd),這時候我們使用python中os模塊的os.path.abspath(name)功能,甭管是linux或者Windows都可以獲取當前的絕對路徑。
os模塊的常用功能:
1 os.name #顯示當前使用的平臺
>>> import os
>>> os.name
‘posix‘ #表示linux
>>> os.name
‘nt‘ #表示windows
2 os.getcwd() #顯示當前python腳本工作路徑
>>> os.getcwd()
‘/home/zhuzhu‘ #獲取當前腳本所在的路徑
3.os.chdir() #修改文件路徑
>>> os.getcwd()
‘/home/zhuzhu‘ #文件當前路徑是:‘/home/zhuzhu‘
>>> os.chdir("/home") #我們使用chdir()來修改文件路徑,修改成"/home"
>>> os.getcwd()
‘/home‘ #可以看出,修改文件路徑成功了
4.os.curdir #返回當前目錄,是一個屬性,而不是一個方法
>>> os.curdir
‘.‘ #"."表示當前目錄
>>> os.getcwd()
‘/home‘
5.os.pardir #返回上一級目錄,獲取當前目錄的父目錄字符串名:(
‘..‘
)
>>> os.pardir
‘..‘ #".."代表當前目錄的子目錄
6.os.makedir("dirname1/dirname2") #可生成多層遞歸目錄,就是遞歸的創建文件目錄
下面,我們在當前目錄下創建一個文件夾
os.makedirs("/home/zhuzhu/geng/alex")
os.makedirs()在文件/home/zhuzhu下創建了geng目錄,在geng目錄下創建了文件alex,如下,下面我們來看看是否創建成功:
[email protected]:~$ ls /home/zhuzhu
ATM day6 random title4 視頻
Credit day7 shopping_center title5 圖片
CreditCard examples.desktop sorted title6 文檔
day1 geng title10 title7 下載
day2 java_error_in_PYCHARM_2297.log title11 title8 音樂
day3 learning_log title15 title9 桌面
day4 pycharm-2016.3.3 title16 第五天 作業
day4.0 pygame title2 公共的 作業匯總
day5 《Python編程》源代碼文件 title3 模板
從上面可以看出,文件geng創建成功,下面來看看alex是否創建成功:
[email protected]:~$ ls /home/zhuzhu/geng
alex
可以看出,目錄alex也創建成功了。
7.os.removedirs("dirname1") #若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,以此類推
os.removedirs()是刪除空的目錄,遞歸的刪除目錄
上面我們創建了一個/home/zhuzhu/geng/alex,後面兩個目錄都為空,那麽使用os.removedirs()看是否能夠刪除成功。
>>> os.removedirs("/home/zhuzhu/geng/alex") #刪除目錄alex,如果geng為空,也刪除,依次類推。
[email protected]:~$ ls
ATM day6 shopping_center title5 圖片
Credit day7 sorted title6 文檔
CreditCard examples.desktop title10 title7 下載
day1 java_error_in_PYCHARM_2297.log title11 title8 音樂
day2 learning_log title15 title9 桌面
day3 pycharm-2016.3.3 title16 第五天 作業
day4 pygame title2 公共的 作業匯總
day4.0 《Python編程》源代碼文件 title3 模板
day5 random title4 視頻
可以看出,geng目錄已經刪除成功了
[email protected]:~$ ls /home/zhuzhu/geng
ls: 無法訪問‘/home/zhuzhu/geng‘: 沒有那個文件或目錄
系統裏面也沒有/home/zhuzhu/geng這個文件目錄了
8.os.mkdir("dirname") #生成單級目錄;只能一層一層創建,不能像makedirs()遞歸的創建
>>> os.mkdir("/home/zhuzhu/geng/alex")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: ‘/home/zhuzhu/geng/alex‘
>>> os.mkdir("/home/zhuzhu/geng")
>>> os.mkdir("/home/zhuzhu/geng/alex")
上面,我們使用mkdir("/home/zhuzhu/geng/alex")進行目錄創建,系統報錯,找不到文件路徑/home/zhuzhu/geng,在下面我們先創建geng,然後創建alex就可以,mkdir()是一層一層創建文件目錄,如果上一層文件目錄不存在,在會報錯。
9.rmdir("dirname") #刪除當即空目錄,若目錄不為空則無法刪除,報錯;
10.os.listdir("dirname") #列出指定目錄下的所有文件和子目錄,包含隱藏文件,並以列表方式打印
os.listdir("dirname") 以列表的形式顯示當前文件下所有的文件和子目錄,如下:
>>> os.listdir(".") #當前文件的子目錄
[‘.compiz‘, ‘.profile‘, ‘day5‘, ‘examples.desktop‘, ‘.bashrc‘, ‘title10‘, ‘.config‘, ‘title8‘, ‘title15‘, ‘title16‘, ‘java_error_in_PYCHARM_2297.log‘, ‘.sunpinyin‘, ‘sorted‘, ‘.java‘, ‘.mozilla‘, ‘shopping_center‘, ‘.gnupg‘, ‘.gphoto‘, ‘音樂‘, ‘pygame‘, ‘作業‘, ‘day7‘, ‘.cache‘, ‘.pki‘, ‘title11‘, ‘day6‘, ‘作業匯總‘, ‘title4‘, ‘title3‘, ‘.sogouinput‘, ‘title2‘, ‘CreditCard‘, ‘day1‘, ‘.bash_logout‘, ‘title6‘, ‘random‘, ‘.xinputrc‘, ‘.ICEauthority‘, ‘title7‘, ‘day4‘, ‘.gnome‘, ‘.local‘, ‘ 文檔‘, ‘公共的‘, ‘.xsession-errors‘, ‘視頻‘, ‘桌面‘, ‘.bash_history‘, ‘.xsession-errors.old‘, ‘.Xauthority‘, ‘《Python編程》源代 碼文件‘, ‘day3‘, ‘圖片‘, ‘Credit‘, ‘.dbus‘, ‘pycharm-2016.3.3‘, ‘.python_history‘, ‘day2‘, ‘第五天‘, ‘ATM‘, ‘.PyCharm2016.3‘, ‘.gconf‘, ‘title5‘, ‘下載‘, ‘.mysql_history‘, ‘learning_log‘, ‘模板‘, ‘title9‘, ‘.sudo_as_admin_successful‘, ‘day4.0‘, ‘.presage‘]
>>> os.listdir("..") #上一級文件的子目錄
[‘zhuzhu‘]
11.os.remove() #刪除一個文件
下面,我們來看一個例子:
>>> os.mkdir("/home/zhuzhu/geng") #首先創建一個geng的目錄,並且在裏面添加內容
>>> os.rmdir("/home/zhuzhu/geng") #添加內容之後,我們來刪除geng文件
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: ‘/home/zhuzhu/geng‘
刪除的時候,報錯了,提示說文件不是空,不能刪除,現在我們使用os.remove("dirname")來進行刪除嘗試:
>>> os.remove("/home/zhuzhu/geng")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IsADirectoryError: [Errno 21] Is a directory: ‘/home/zhuzhu/geng‘
>>> os.remove("/home/zhuzhu/geng/alex") #刪除成功,刪除geng文件夾下面的文件alex,從上面例子中我們可以看出,removedirs()是遞歸的刪除文件夾,rmdir()是刪除單層文件夾,如果文件夾裏面有內容(即便裏面的文件是空的,也是不能刪除的),是不能刪除的。而remove()是刪除文件夾裏面的文件。
12.os.remove() #重命名文件/目錄
>>> os.mkdir("/home/zhuzhu/geng") #創建一個文件夾
>>> os.rename("/home/zhuzhu/geng","/home/zhuzhu/alexsb") #修改這個文件夾的名字,可以看出,修改成功了
os.remove()是重命名文件夾的,不能修改文件的名字
13.os.stat("path/filename") #獲取文件/目錄信息
>>> os.listdir() #獲取當前文件下的文件/目錄信息
[‘.compiz‘, ‘.profile‘, ‘day5‘, ‘examples.desktop‘, ‘.bashrc‘, ‘title10‘, ‘.config‘, ‘title8‘, ‘title15‘, ‘title16‘, ‘java_error_in_PYCHARM_2297.log‘, ‘.sunpinyin‘, ‘sorted‘, ‘.java‘, ‘.mozilla‘, ‘shopping_center‘, ‘.gnupg‘, ‘.gphoto‘, ‘音樂‘, ‘pygame‘, ‘作業‘, ‘day7‘, ‘.cache‘, ‘.pki‘, ‘title11‘, ‘day6‘, ‘作業匯總‘, ‘title4‘, ‘title3‘, ‘.sogouinput‘, ‘title2‘, ‘CreditCard‘, ‘day1‘, ‘.bash_logout‘, ‘title6‘, ‘random‘, ‘.xinputrc‘, ‘.ICEauthority‘, ‘title7‘, ‘day4‘, ‘.gnome‘, ‘.local‘, ‘文 檔‘, ‘公共的‘, ‘.xsession-errors‘, ‘視頻‘, ‘桌面‘, ‘.bash_history‘, ‘.xsession-errors.old‘, ‘.Xauthority‘, ‘《Python編程》源代碼 文件‘, ‘day3‘, ‘圖片‘, ‘Credit‘, ‘.dbus‘, ‘pycharm-2016.3.3‘, ‘.python_history‘, ‘day2‘, ‘第五天‘, ‘ATM‘, ‘.PyCharm2016.3‘, ‘.gconf‘, ‘title5‘, ‘下載‘, ‘.mysql_history‘, ‘learning_log‘, ‘模板‘, ‘title9‘, ‘.sudo_as_admin_successful‘, ‘day4.0‘, ‘.presage‘]
>>> os.stat("day5") #獲取文件的信息
os.stat_result(st_mode=16893, st_ino=17302706, st_dev=64768, st_nlink=4, st_uid=1000, st_gid=1000, st_size=4096, st_atime=1500590962, st_mtime=1496033312, st_ctime=1496033312)
可以看出,os.stat("dirname")是獲取文件的信息,st_size大小,創建時間等等信息。
14.os.sep #輸出操作系統特定路徑分隔符,win下為"\\",Linux下為"/"
>>> import os #輸出操作系統特定路徑分隔符,Windows下為"\\",Linux下為"/"
>>> os.sep
‘/‘ #從輸出可以看出,使用的是Linux操作系統
15.os.linesep #輸出當前平臺使用的行終止符,Windows下為"\t\n",Linux下為"\n"
平臺使用的行終止符,Windows下為"\t\n",Linux下為"\n",下面來看看當前電腦的行終止符。
>>> os.linesep #查看當前平臺使用的行終止符,Windows下為"\t\n",Linux下為"\n"
‘\n‘
16.os.pathsep #輸出用於分割文件路徑的字符串
>>> os.pathsep
‘:‘
17.os.system("bash command") #運行shell命令,直接顯示
>>> os.system("dir") #運行系統命令
ATM day6 shopping_center title5 圖片
Credit day7 sorted title6 文檔
CreditCard examples.desktop title10 title7 下載
day1 java_error_in_PYCHARM_2297.log title11 title8 音樂
day2 learning_log title15 title9 桌面
day3 pycharm-2016.3.3 title16 第五天 作業
day4 pygame title2 公共的 作業匯總
day4.0 《Python編程》源代碼文件 title3 模板
day5 random title4 視頻
18.os.environ #獲取系統環境變量
os.environ是獲取系統環境變量,輸入可以顯示系統的環境變量
19.os.path.abspath(path) #返回path規範化的絕對路徑
>>> os.path.abspath("/home/zhuzhu")
‘/home/zhuzhu‘
20.os.path.split(path) #將path分割成目錄和文件名二元組返回
>>> os.path.split("/home/zhuzhu/a.txt")
(‘/home/zhuzhu‘, ‘a.txt‘)
21.os.path.dirname(path) #返回path的目錄。其實就是os.path.split(path)的第一個元素
>>> os.path.dirname("/home/zhuzhu/a.txt")
‘/home/zhuzhu‘
>>> os.path.dirname("/home/zhuzhu")
‘/home‘
22.os.path.basename(path) #提取文件最後一個名字,即os.path.split(path)的第二個元素
>>> os.path.basename("/home/zhuzhu/alex.txt")
‘alex.txt‘
>>> os.path.basename("/home/zhuzhu")
‘zhuzhu‘
23.os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False
>>> os.path.exists("/home/zhuzhu/alexsb.txt")
False
>>> os.path.exists("/home/zhuzhu")
True
從上面可以看出,os.path.exists(path)是用來判斷文件是否存在,如果path存在,則返回True;否則返回False
24.os.path.isabs(path) #如果path是絕對路徑,返回True
Linux系統中,以"/"開頭的就是絕地路徑,否則就是相對路徑
>>> os.path.isabs("/home/zhuzhu")
True
>>> os.path.isabs("/zhuzhu")
True
>>> os.path.isabs("zhuzhu")
False
os.path.isabs(path)判斷文件路徑是否是絕對路徑,Linux系統中,只要是以"/"開頭就是絕對路徑,Windows"C:\"等開頭是絕對路徑,即從根目錄開始就是絕對路徑,不管文件是否存在。
25.os.path.isfile(path) #如果path是一個存在的文件,返回True;否則返回False
>>> os.path.isfile("/home/zhuzhu/alex.txt")
True
>>> os.path.isfile("/home/zhuzhu")
False
os.path.isfile(path)是判斷一個文件是否存在,如果path是一個文件夾或者不存在,就會返回錯誤,其實就是判斷一個文件是否存在。
26.os.path.isdir(path) 如果paht是一個存在的目錄,則返回True。否則返回False
>>> os.path.isdir("/home/zhuzhu")
True
>>> os.path.isdir("/home/zhuzhu/alex.txt")
False
os.path.isfile(path)是判斷一個文件是否存在,而os.path.sidir(path)是判斷一個目錄是否存在,兩者是不一樣的,一個是文件,一個是目錄。
27.os.path.join(path1,path2,path3) #將多個文件路徑組合後返回,第一個絕對路徑之前的參數將被忽略
>>> os.path.join("/home","zhuzhu")
‘/home/zhuzhu‘
>>> os.path.join("/home","zhuzhu","alex.txt")
‘/home/zhuzhu/alex.txt‘
28.os.path.getatime(path) #返回path所指向的文件或者目錄最後存取時間 (getatime = get access time最後存取時間)
>>> os.path.getatime("/home/zhuzhu/alex.txt")
1500730373.8242517
29.os.path.getmtime(path) #返回path所有指向的文件或者目錄的最後修改時間 (getmtime = get modify time最後修改時間)
>>> os.path.getmtime("/home/zhuzhu/alex.txt")
1500730373.8242517
day5模塊學習 -- os模塊學習