成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[零基礎(chǔ)學(xué)python]折騰一下目錄

Crazy_Coder / 3526人閱讀

摘要:就像這樣以下將一些典型舉例說(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

相關(guān)文章

  • [基礎(chǔ)學(xué)python]一個(gè)免費(fèi)的實(shí)驗(yàn)室

    摘要:在學(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)...

    soasme 評(píng)論0 收藏0
  • 30歲基礎(chǔ)學(xué)編程,先學(xué)哪種語(yǔ)言最好?

    摘要:大學(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)...

    xietao3 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)Python]已經(jīng)過(guò)去的數(shù)據(jù)類型總結(jié)

    摘要:前面已經(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é),就太好了。 下面的表格中...

    voidking 評(píng)論0 收藏0
  • 我是如何基礎(chǔ)學(xué)轉(zhuǎn)行人工智能的(附十問(wèn)十答)

    摘要:我的決定是學(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é)(以找工作為目...

    IamDLY 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<