摘要:就像這樣以下將一些典型舉例說(shuō)明特別說(shuō)明,下面的所有操作,均是進(jìn)入到如下的目錄中進(jìn)行的。上面的操作發(fā)現(xiàn)這個(gè)文件在當(dāng)前目錄下是不存在的,但是,用能夠返回一個(gè)絕對(duì)路徑并帶有這個(gè)不存在的文件的文件名。返回首頁(yè)上一講私有和專有
python在安裝的時(shí)候,就自帶了很多模塊,我們把這些模塊稱之為標(biāo)準(zhǔn)庫(kù),其中,有一個(gè)是使用頻率比較高的,就是 os 。這個(gè)庫(kù)中方法和屬性眾多,有興趣的看官可以參考官方文檔:https://docs.python.org/2/library/os.html,或者在交互模式中,用dir(os)看一看。
>>> import os #這個(gè)動(dòng)作很重要,不能缺少 >>> 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,真所謂“弱水三千,只取一瓢”,為什么這么偏愛(ài)它呢?因?yàn)樗颓懊嬉呀?jīng)講過(guò)的文件操作進(jìn)行配合,就能夠隨心所欲操作各個(gè)地方的文件了(關(guān)于文件,請(qǐng)參考:不要紅頭文件(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()逐個(gè)查看有關(guān)信息,并了解其使用方法。下面列出常見(jiàn)的幾個(gè)使用方法,為看官減輕一點(diǎn)閱讀英文的障礙,不過(guò),如果看官英語(yǔ)足夠好,請(qǐng)直接看原文檔。就像這樣:
>>> 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.
以下將一些典型舉例說(shuō)明:
特別說(shuō)明,下面的所有操作,均是進(jìn)入到如下的目錄中進(jìn)行的。
qw@qw-Latitude-E4300:~/Documents/ITArticles/BasicPython/codes$ pwd /home/qw/Documents/ITArticles/BasicPython/codes #當(dāng)前目錄 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. >>>文件的絕對(duì)路徑
>>> import os.path >>> os.path.abspath("225.py") "/home/qw/Documents/ITArticles/BasicPython/codes/225.py"
文件 225.py 是真實(shí)存在上述路徑中的,得到了該文件的絕對(duì)路徑。但是,如果隨便提供一個(gè)不在這個(gè)目錄中的文件,又如何?
>>> 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中是否是文件,其實(shí)是判斷在該路徑中,是否存在那個(gè)文件,如果存在則返回True,否則False。上面的操作發(fā)現(xiàn) 2222.py 這個(gè)文件在當(dāng)前目錄下是不存在的,但是,用os.path.abspaht("2222.py")能夠返回一個(gè)絕對(duì)路徑并帶有這個(gè)不存在的文件的文件名。這里不妨理解為,如果要建立這個(gè)文件,它即將被放在那個(gè)位置。
按照這樣理解,還可:
>>> os.path.abspath("/home/qw/kkkkkkkk.kk") "/home/qw/kkkkkkkk.kk"分開(kāi)目錄和文件名
>>> 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ù)是目錄加文件名,就可以將路徑和文件名分開(kāi)。其實(shí),我看這個(gè)功能不是很智能,你看這樣
>>> os.path.split("/home/qw") ("/home", "qw") >>> os.path.split("/home/qw/") ("/home/qw", "")
它就是將最后一組認(rèn)為是文件名了,即最后一個(gè)/后面的就是文件名,所以第二個(gè)實(shí)驗(yàn)中,文件名是空了。是不是有點(diǎn)傻呢?
同樣,參數(shù)中的文件或者目錄,不一定是你的電腦中真實(shí)存在的,請(qǐng)看:
>>> os.path.split("/foo/python/qiwsir/git.git") ("/foo/python/qiwsir", "git.git")
只要符合目錄書(shū)寫結(jié)構(gòu),就可以分解了。
有另外兩個(gè)屬性,是os.path.split()的分別執(zhí)行,即可以分別獲得路徑和文件名,這樣讓操作更簡(jiǎn)單了。
>>> os.path.dirname("/foo/python/qiwsir/git.git") "/foo/python/qiwsir" >>> os.path.basename("foo/python/qiwsir/git.git") "git.git"判斷
前面稍微提到了os.path.isfile()可以用來(lái)判斷一個(gè)文件是否存在,那么判斷目錄路徑是否存在,可否?可:
>>> os.path.exists("/foo/python/qiwsir") False >>> os.path.exists("/home/qw/Documents") True
判斷相關(guān)的屬性還有:
os.path.isabs(path):判斷path是否為絕對(duì)路徑
os.paht.isdir(path):判斷path是否為存在的目錄
組合路徑將兩個(gè)或多個(gè)對(duì)象組合起來(lái),是常見(jiàn)的事情,那么如何將多個(gè)路徑組合呢?如下:
>>> os.path.join("/home/python","/BasicsPython","226.md") "/BasicsPython/226.md"
特別提醒,這個(gè)屬性的返回值中,將第一個(gè)絕對(duì)路徑忽略。
>>> os.path.join("/","/home/qw","learnpython.md") "/home/qw/learnpython.md"
返回首頁(yè) | 上一講:私有和專有
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37405.html
摘要:在學(xué)生時(shí)代,就羨慕實(shí)驗(yàn)室,老師在里面可以鼓搗各種有意思的東西。再后來(lái),終于發(fā)現(xiàn)原來(lái)計(jì)算機(jī)是一個(gè)最好的實(shí)驗(yàn)室。通過(guò)實(shí)驗(yàn),研究清楚了,才能在編程實(shí)踐中使用。其實(shí),這就是一個(gè)非常好的實(shí)驗(yàn)室。 在學(xué)生時(shí)代,就羨慕實(shí)驗(yàn)室,老師在里面可以鼓搗各種有意思的東西。上大學(xué)的時(shí)候,終于有機(jī)會(huì)在實(shí)驗(yàn)室做大量實(shí)驗(yàn)了,因?yàn)槲沂俏锢硐?,并且,遇到了一位非常令我尊敬的老師——高老師,讓我在他的?shí)驗(yàn)室里面,把所有已經(jīng)...
摘要:大學(xué),光學(xué)工程研究生畢業(yè),和程序猿完全不搭邊。那怎么辦,試著學(xué)一學(xué)唄,學(xué)習(xí)才是程序猿的天性。所以我在想程序猿是不是都需要新知識(shí)刺激一下,才能保持興奮的頭腦。有句話說(shuō)的很對(duì)程序猿就像好奇的貓,追著毛球的線頭玩,最后一個(gè)毛球在腦袋里攪漿糊。 說(shuō)說(shuō)我自己的經(jīng)歷。211大學(xué),光學(xué)工程研究生畢業(yè),和程序猿完全不搭邊。 畢業(yè)后進(jìn)了成都某國(guó)字頭研究所,在行業(yè)里摸爬滾打了四年,2018年機(jī)緣巧合在家養(yǎng)...
摘要:前面已經(jīng)洋洋灑灑地介紹了不少數(shù)據(jù)類型。所有的數(shù)據(jù)類型,就是一種對(duì)象??梢栽诮换ツJ较逻@樣查看顯示應(yīng)該是這樣的注意看上面亂七八糟的英文中,是不是有符號(hào),這是什么前面在講述字符串的時(shí)候提到了轉(zhuǎn)義符號(hào),這是換一行。 前面已經(jīng)洋洋灑灑地介紹了不少數(shù)據(jù)類型。不能再不顧一切地向前沖了,應(yīng)當(dāng)總結(jié)一下。這樣讓看官能夠從總體上對(duì)這些數(shù)據(jù)類型有所了解,如果能夠有一覽眾山小的感覺(jué),就太好了。 下面的表格中...
摘要:我的決定是學(xué)人工智能,當(dāng)時(shí)對(duì)這個(gè)比較感興趣。從機(jī)器學(xué)習(xí)學(xué)到深度學(xué)習(xí)再學(xué)回機(jī)器學(xué)習(xí)。面試,成功地去公司從事機(jī)器學(xué)習(xí)深度學(xué)習(xí)方面的基礎(chǔ)工作。這個(gè)系列不僅僅以學(xué)習(xí)為目的,目的是為了達(dá)到機(jī)器學(xué)習(xí)的工作入門標(biāo)準(zhǔn)。 每個(gè)字都是經(jīng)驗(yàn)所得,都是站在一個(gè)零基礎(chǔ)的人的角度寫的,純手打+網(wǎng)上優(yōu)秀資源整合,希望大家能每個(gè)字都認(rèn)真看。 接下來(lái)文章會(huì)側(cè)重在以下幾方面 1、零基礎(chǔ)如何進(jìn)行人工智能的自學(xué)(以找工作為目...
閱讀 1020·2021-11-25 09:43
閱讀 1679·2019-08-30 13:59
閱讀 1612·2019-08-30 11:22
閱讀 2137·2019-08-30 11:06
閱讀 1308·2019-08-28 17:51
閱讀 3744·2019-08-26 12:12
閱讀 790·2019-08-26 12:11
閱讀 456·2019-08-26 12:10