#æè ¾ä¸ä¸ç®å½ pythonå¨å®è£ çæ¶åï¼å°±èªå¸¦äºå¾å¤æ¨¡åï¼æä»¬æè¿äºæ¨¡åç§°ä¹ä¸ºæ ååºï¼å ¶ä¸ï¼æä¸ä¸ªæ¯ä½¿ç¨é¢çæ¯è¾é«çï¼å°±æ¯ os ãè¿ä¸ªåºä¸æ¹æ³å屿§ä¼å¤ï¼æå ´è¶£ççå®å¯ä»¥åè宿¹ææ¡£ï¼[https://docs.python.org/2/library/os.html](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'] å¨è¿ä¹å¤çä¸è¥¿ä¸ï¼æ¬è®²åªå ³æ³¨`os.path`ï¼çæè°â弱水ä¸åï¼åªåä¸ç¢âï¼ä¸ºä»ä¹è¿ä¹åç±å®å¢ï¼å 为å®ååé¢å·²ç»è®²è¿çæä»¶æä½è¿è¡é åï¼å°±è½å¤éå¿ææ¬²æä½åä¸ªå°æ¹çæä»¶äºï¼å ³äºæä»¶ï¼è¯·åèï¼[ä¸è¦çº¢å¤´æä»¶(1)](./130.md)ã[ä¸è¦çº¢å¤´æä»¶(2)](./131.md)ï¼ å ³äº`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()`é个æ¥çæå ³ä¿¡æ¯ï¼å¹¶äºè§£å ¶ä½¿ç¨æ¹æ³ãä¸é¢ååºå¸¸è§çå ä¸ªä½¿ç¨æ¹æ³ï¼ä¸ºçå®åè½»ä¸ç¹é è¯»è±æçéç¢ï¼ä¸è¿ï¼å¦æçå®è±è¯è¶³å¤å¥½ï¼è¯·ç´æ¥çåææ¡£ãå°±åè¿æ ·ï¼ >>> 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ãä¸é¢çæä½åç° 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()`,åæ°æ¯ç®å½å æä»¶åï¼å°±å¯ä»¥å°è·¯å¾åæä»¶ååå¼ãå ¶å®ï¼æçè¿ä¸ªåè½ä¸æ¯å¾æºè½ï¼ä½ çè¿æ · >>> os.path.split("/home/qw") ('/home', 'qw') >>> os.path.split("/home/qw/") ('/home/qw', '') å®å°±æ¯å°æåä¸ç»è®¤ä¸ºæ¯æä»¶åäºï¼å³æåä¸ä¸ª`/`åé¢çå°±æ¯æä»¶åï¼æä»¥ç¬¬äºä¸ªå®éªä¸ï¼æä»¶åæ¯ç©ºäºãæ¯ä¸æ¯æç¹å»å¢ï¼ åæ ·ï¼åæ°ä¸çæä»¶æè ç®å½ï¼ä¸ä¸å®æ¯ä½ ççµèä¸çå®åå¨çï¼è¯·çï¼ >>> os.path.split("/foo/python/qiwsir/git.git") ('/foo/python/qiwsir', 'git.git') åªè¦ç¬¦åç®å½ä¹¦åç»æï¼å°±å¯ä»¥åè§£äºã æå¦å¤ä¸¤ä¸ªå±æ§ï¼æ¯`os.path.split()`çå嫿§è¡ï¼å³å¯ä»¥åå«è·å¾è·¯å¾åæä»¶åï¼è¿æ ·è®©æä½æ´ç®åäºã >>> 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 夿ç¸å ³ç屿§è¿æï¼ - `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'