1. 程式人生 > >day5模塊學習 -- os模塊學習

day5模塊學習 -- os模塊學習

osi admin conf base cache errors day3 card www

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模塊學習