摘要:就像這樣以下將一些典型舉例說明特別說明,下面的所有操作,均是進入到如下的目錄中進行的。上面的操作發(fā)現(xiàn)這個文件在當前目錄下是不存在的,但是,用能夠返回一個絕對路徑并帶有這個不存在的文件的文件名。返回首頁上一講私有和專有
python在安裝的時候,就自帶了很多模塊,我們把這些模塊稱之為標準庫,其中,有一個是使用頻率比較高的,就是 os 。這個庫中方法和屬性眾多,有興趣的看官可以參考官方文檔:https://docs.python.org/2/library/os.html,或者在交互模式中,用dir(os)看一看。
>>> import os #這個動作很重要,不能缺少 >>> dir(os) ["EX_CANTCREAT", "EX_CONFIG", "EX_DATAERR", "EX_IOERR", "EX_NOHOST", "EX_NOINPUT", "EX_NOPERM", "EX_NOUSER", "EX_OK", "EX_OSERR", "EX_OSFILE", "EX_PROTOCOL", "EX_SOFTWARE", "EX_TEMPFAIL", "EX_UNAVAILABLE", "EX_USAGE", "F_OK", "NGROUPS_MAX", "O_APPEND", "O_ASYNC", "O_CREAT", "O_DIRECT", "O_DIRECTORY", "O_DSYNC", "O_EXCL", "O_LARGEFILE", "O_NDELAY", "O_NOATIME", "O_NOCTTY", "O_NOFOLLOW", "O_NONBLOCK", "O_RDONLY", "O_RDWR", "O_RSYNC", "O_SYNC", "O_TRUNC", "O_WRONLY", "P_NOWAIT", "P_NOWAITO", "P_WAIT", "R_OK", "SEEK_CUR", "SEEK_END", "SEEK_SET", "TMP_MAX", "UserDict", "WCONTINUED", "WCOREDUMP", "WEXITSTATUS", "WIFCONTINUED", "WIFEXITED", "WIFSIGNALED", "WIFSTOPPED", "WNOHANG", "WSTOPSIG", "WTERMSIG", "WUNTRACED", "W_OK", "X_OK", "_Environ", "__all__", "__builtins__", "__doc__", "__file__", "__name__", "__package__", "_copy_reg", "_execvpe", "_exists", "_exit", "_get_exports_list", "_make_stat_result", "_make_statvfs_result", "_pickle_stat_result", "_pickle_statvfs_result", "_spawnvef", "abort", "access", "altsep", "chdir", "chmod", "chown", "chroot", "close", "closerange", "confstr", "confstr_names", "ctermid", "curdir", "defpath", "devnull", "dup", "dup2", "environ", "errno", "error", "execl", "execle", "execlp", "execlpe", "execv", "execve", "execvp", "execvpe", "extsep", "fchdir", "fchmod", "fchown", "fdatasync", "fdopen", "fork", "forkpty", "fpathconf", "fstat", "fstatvfs", "fsync", "ftruncate", "getcwd", "getcwdu", "getegid", "getenv", "geteuid", "getgid", "getgroups", "getloadavg", "getlogin", "getpgid", "getpgrp", "getpid", "getppid", "getresgid", "getresuid", "getsid", "getuid", "initgroups", "isatty", "kill", "killpg", "lchown", "linesep", "link", "listdir", "lseek", "lstat", "major", "makedev", "makedirs", "minor", "mkdir", "mkfifo", "mknod", "name", "nice", "open", "openpty", "pardir", "path", "pathconf", "pathconf_names", "pathsep", "pipe", "popen", "popen2", "popen3", "popen4", "putenv", "read", "readlink", "remove", "removedirs", "rename", "renames", "rmdir", "sep", "setegid", "seteuid", "setgid", "setgroups", "setpgid", "setpgrp", "setregid", "setresgid", "setresuid", "setreuid", "setsid", "setuid", "spawnl", "spawnle", "spawnlp", "spawnlpe", "spawnv", "spawnve", "spawnvp", "spawnvpe", "stat", "stat_float_times", "stat_result", "statvfs", "statvfs_result", "strerror", "symlink", "sys", "sysconf", "sysconf_names", "system", "tcgetpgrp", "tcsetpgrp", "tempnam", "times", "tmpfile", "tmpnam", "ttyname", "umask", "uname", "unlink", "unsetenv", "urandom", "utime", "wait", "wait3", "wait4", "waitpid", "walk", "write"]
在這么多的東西中,本講只關(guān)注os.path,真所謂“弱水三千,只取一瓢”,為什么這么偏愛它呢?因為它和前面已經(jīng)講過的文件操作進行配合,就能夠隨心所欲操作各個地方的文件了(關(guān)于文件,請參考:不要紅頭文件(1)、不要紅頭文件(2))
關(guān)于os.path的屬性也不少,依然可以用dir(os.path)查看:
>>> dir(os.path) ["__all__", "__builtins__", "__doc__", "__file__", "__name__", "__package__", "_joinrealpath", "_unicode", "_varprog", "abspath", "altsep", "basename", "commonprefix", "curdir", "defpath", "devnull", "dirname", "exists", "expanduser", "expandvars", "extsep", "genericpath", "getatime", "getctime", "getmtime", "getsize", "isabs", "isdir", "isfile", "islink", "ismount", "join", "lexists", "normcase", "normpath", "os", "pardir", "pathsep", "realpath", "relpath", "samefile", "sameopenfile", "samestat", "sep", "split", "splitdrive", "splitext", "stat", "supports_unicode_filenames", "sys", "walk", "warnings"]
這么多屬性,看官可以用help()逐個查看有關(guān)信息,并了解其使用方法。下面列出常見的幾個使用方法,為看官減輕一點閱讀英文的障礙,不過,如果看官英語足夠好,請直接看原文檔。就像這樣:
>>> help(os.path.split) split(p) Split a pathname. Returns tuple "(head, tail)" where "tail" is everything after the final slash. Either part may be empty.
以下將一些典型舉例說明:
特別說明,下面的所有操作,均是進入到如下的目錄中進行的。
qw@qw-Latitude-E4300:~/Documents/ITArticles/BasicPython/codes$ pwd /home/qw/Documents/ITArticles/BasicPython/codes #當前目錄 qw@qw-Latitude-E4300:~/Documents/ITArticles/BasicPython/codes$ python Python 2.7.6 (default, Nov 13 2013, 19:24:16) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>文件的絕對路徑
>>> import os.path >>> os.path.abspath("225.py") "/home/qw/Documents/ITArticles/BasicPython/codes/225.py"
文件 225.py 是真實存在上述路徑中的,得到了該文件的絕對路徑。但是,如果隨便提供一個不在這個目錄中的文件,又如何?
>>> os.path.isfile("225.py") True >>> os.path.isfile("2222.py") False >>> os.path.abspath("2222.py") "/home/qw/Documents/ITArticles/BasicPython/codes/2222.py"
os.path.isfile(path),可以判斷path中是否是文件,其實是判斷在該路徑中,是否存在那個文件,如果存在則返回True,否則False。上面的操作發(fā)現(xiàn) 2222.py 這個文件在當前目錄下是不存在的,但是,用os.path.abspaht("2222.py")能夠返回一個絕對路徑并帶有這個不存在的文件的文件名。這里不妨理解為,如果要建立這個文件,它即將被放在那個位置。
按照這樣理解,還可:
>>> os.path.abspath("/home/qw/kkkkkkkk.kk") "/home/qw/kkkkkkkk.kk"分開目錄和文件名
>>> pn = os.path.abspath("225.py") >>> pn "/home/qw/Documents/ITArticles/BasicPython/codes/225.py" >>> os.path.split(pn) ("/home/qw/Documents/ITArticles/BasicPython/codes", "225.py") >>> path, filename = os.path.split(pn)[0], os.path.split(pn)[1] >>> path "/home/qw/Documents/ITArticles/BasicPython/codes" >>> filename "225.py"
os.paht.split(),參數(shù)是目錄加文件名,就可以將路徑和文件名分開。其實,我看這個功能不是很智能,你看這樣
>>> os.path.split("/home/qw") ("/home", "qw") >>> os.path.split("/home/qw/") ("/home/qw", "")
它就是將最后一組認為是文件名了,即最后一個/后面的就是文件名,所以第二個實驗中,文件名是空了。是不是有點傻呢?
同樣,參數(shù)中的文件或者目錄,不一定是你的電腦中真實存在的,請看:
>>> os.path.split("/foo/python/qiwsir/git.git") ("/foo/python/qiwsir", "git.git")
只要符合目錄書寫結(jié)構(gòu),就可以分解了。
有另外兩個屬性,是os.path.split()的分別執(zhí)行,即可以分別獲得路徑和文件名,這樣讓操作更簡單了。
>>> os.path.dirname("/foo/python/qiwsir/git.git") "/foo/python/qiwsir" >>> os.path.basename("foo/python/qiwsir/git.git") "git.git"判斷
前面稍微提到了os.path.isfile()可以用來判斷一個文件是否存在,那么判斷目錄路徑是否存在,可否?可:
>>> os.path.exists("/foo/python/qiwsir") False >>> os.path.exists("/home/qw/Documents") True
判斷相關(guān)的屬性還有:
os.path.isabs(path):判斷path是否為絕對路徑
os.paht.isdir(path):判斷path是否為存在的目錄
組合路徑將兩個或多個對象組合起來,是常見的事情,那么如何將多個路徑組合呢?如下:
>>> os.path.join("/home/python","/BasicsPython","226.md") "/BasicsPython/226.md"
特別提醒,這個屬性的返回值中,將第一個絕對路徑忽略。
>>> os.path.join("/","/home/qw","learnpython.md") "/home/qw/learnpython.md"
返回首頁 | 上一講:私有和專有
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37405.html
摘要:在學生時代,就羨慕實驗室,老師在里面可以鼓搗各種有意思的東西。再后來,終于發(fā)現(xiàn)原來計算機是一個最好的實驗室。通過實驗,研究清楚了,才能在編程實踐中使用。其實,這就是一個非常好的實驗室。 在學生時代,就羨慕實驗室,老師在里面可以鼓搗各種有意思的東西。上大學的時候,終于有機會在實驗室做大量實驗了,因為我是物理系,并且,遇到了一位非常令我尊敬的老師——高老師,讓我在他的實驗室里面,把所有已經(jīng)...
摘要:大學,光學工程研究生畢業(yè),和程序猿完全不搭邊。那怎么辦,試著學一學唄,學習才是程序猿的天性。所以我在想程序猿是不是都需要新知識刺激一下,才能保持興奮的頭腦。有句話說的很對程序猿就像好奇的貓,追著毛球的線頭玩,最后一個毛球在腦袋里攪漿糊。 說說我自己的經(jīng)歷。211大學,光學工程研究生畢業(yè),和程序猿完全不搭邊。 畢業(yè)后進了成都某國字頭研究所,在行業(yè)里摸爬滾打了四年,2018年機緣巧合在家養(yǎng)...
摘要:前面已經(jīng)洋洋灑灑地介紹了不少數(shù)據(jù)類型。所有的數(shù)據(jù)類型,就是一種對象。可以在交互模式下這樣查看顯示應(yīng)該是這樣的注意看上面亂七八糟的英文中,是不是有符號,這是什么前面在講述字符串的時候提到了轉(zhuǎn)義符號,這是換一行。 前面已經(jīng)洋洋灑灑地介紹了不少數(shù)據(jù)類型。不能再不顧一切地向前沖了,應(yīng)當總結(jié)一下。這樣讓看官能夠從總體上對這些數(shù)據(jù)類型有所了解,如果能夠有一覽眾山小的感覺,就太好了。 下面的表格中...
摘要:我的決定是學人工智能,當時對這個比較感興趣。從機器學習學到深度學習再學回機器學習。面試,成功地去公司從事機器學習深度學習方面的基礎(chǔ)工作。這個系列不僅僅以學習為目的,目的是為了達到機器學習的工作入門標準。 每個字都是經(jīng)驗所得,都是站在一個零基礎(chǔ)的人的角度寫的,純手打+網(wǎng)上優(yōu)秀資源整合,希望大家能每個字都認真看。 接下來文章會側(cè)重在以下幾方面 1、零基礎(chǔ)如何進行人工智能的自學(以找工作為目...
閱讀 1013·2021-11-25 09:43
閱讀 1675·2019-08-30 13:59
閱讀 1600·2019-08-30 11:22
閱讀 2130·2019-08-30 11:06
閱讀 1306·2019-08-28 17:51
閱讀 3732·2019-08-26 12:12
閱讀 785·2019-08-26 12:11
閱讀 453·2019-08-26 12:10