跟老齐学Python之折腾一下目录
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']
在这么多的东西中,本讲只关注os.path,真所谓“弱水三千,只取一瓢”,为什么这么偏爱它呢?因为它和前面已经讲过的文件操作进行配合,就能够随心所欲操作各个地方的文件了(关于文件,请参考:不要红头文件(1)、不要红头文件(2))
关于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'

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Sama ada artikel, kertas atau tutorial, sorotan utama mana-mana dokumen ialah tajuk dan sudah tentu jadual kandungan. Ia menerangkan struktur garis besar dokumen supaya pengguna boleh sampai ke tempat dan perkara yang mereka harapkan untuk dibaca daripada dokumen tersebut. Ia juga merupakan amalan terbaik untuk menambah jadual kandungan pada kebanyakan dokumen untuk menjadikannya kelihatan lebih profesional. Hari ini, segala-galanya berlaku dalam talian dan orang ramai menggunakan Dokumen Google untuk membuat kebanyakan dokumen. Ramai pengguna masih tidak pasti cara untuk memasukkan atau menambah jadual kandungan dalam google docs. Oleh itu, kami menghasilkan artikel ini untuk menerangkan cara membuat atau memasukkan jadual kandungan dalam Dokumen Google. Cara Memasukkan Jadual Kandungan dalam Dokumen Google Langkah 1: Klik di sini untuk melawati Dokumen Google Dalam Talian. Langkah 2: Jika

Gunakan fungsi File.isDirectory() Java untuk menentukan sama ada fail wujud dan daripada jenis direktori Dalam pengaturcaraan Java, anda sering menghadapi situasi di mana anda perlu menentukan sama ada fail wujud dan jenis direktori. Java menyediakan kelas Fail untuk mengendalikan fail dan direktori Fungsi isDirectory() boleh membantu kami menentukan sama ada fail ialah jenis direktori. Fungsi File.isDirectory() ialah kaedah dalam kelas Fail Fungsinya adalah untuk menentukan Fail semasa

Fungsi glob() dalam PHP digunakan untuk mencari fail atau direktori dan merupakan fungsi operasi fail yang berkuasa. Ia boleh mengembalikan laluan fail atau direktori berdasarkan padanan corak yang ditentukan. Sintaks fungsi glob() adalah seperti berikut: glob(corak, bendera) dengan corak mewakili rentetan corak yang akan dipadankan, yang boleh menjadi ungkapan kad bebas, seperti *.txt (fail yang sepadan berakhir dengan .txt), atau laluan Fail tertentu. flags ialah parameter pilihan yang digunakan untuk mengawal fungsi

Pengenalan fungsi PHP—namakan semula(): Menamakan semula fail atau direktori Pengenalan: Dalam PHP, fungsi nama semula() digunakan untuk menamakan semula fail atau direktori. Ia menyediakan cara mudah untuk menukar nama fail atau direktori. Sama ada fail tunggal atau keseluruhan direktori, anda boleh menggunakan fungsi ini untuk melakukan operasi nama semula. Proses penamaan semula boleh dicapai dengan mudah dengan menyatakan nama fail sumber atau direktori dan nama sasaran. Sintaks: boolrename(string$source,str

Cara menyemak sama ada direktori kosong dalam Linux: 1. Masukkan terminal Linux 2. Jalankan "res=`ls -A $dir` jika [ -z $res ]; kemudian echo "$dir ..."else echo; Kaedah "$ dir..."fi" boleh menentukan sama ada direktori itu kosong.

Pilih gaya katalog dalam Word, dan ia akan dijana secara automatik selepas operasi selesai. Analisis 1. Pergi ke Word pada komputer anda dan klik untuk mengimport. 2Selepas memasukkan, klik pada direktori fail. 3 Kemudian pilih gaya direktori. 4. Selepas operasi selesai, anda boleh melihat bahawa direktori fail dijana secara automatik. Tambahan: Jadual kandungan artikel ringkasan/nota dijana secara automatik, termasuk tajuk peringkat pertama, tajuk peringkat kedua dan tajuk peringkat ketiga, biasanya tidak lebih daripada tajuk peringkat ketiga.

Gunakan fungsi path/filepath.Split untuk membahagikan laluan kepada dua bahagian: direktori dan nama fail Apabila membangunkan program atau memproses fail, selalunya perlu untuk membahagikan laluan kepada dua bahagian: direktori dan nama fail. Dalam bahasa Go, anda boleh menggunakan fungsi Split dalam pakej laluan/fail untuk mencapai fungsi ini. Artikel ini akan memperkenalkan penggunaan fungsi Split dan memberikan contoh kod. Fungsi Split ditakrifkan seperti berikut: funcSplit(pathstring)(di

Versi mudah alih Aplikasi Pembacaan WeChat ialah perisian membaca yang sangat baik Perisian ini menyediakan banyak buku dan karya Anda boleh membacanya pada bila-bila masa, di mana-mana sahaja dengan carian satu klik dan membacanya secara rasmi dan jenis yang berbeza buku tersusun rapi dan nikmati suasana bacaan yang selesa dan santai. Tukar mod bacaan senario yang berbeza, kemas kini bab buku terkini secara berterusan setiap hari, sokong log masuk dalam talian daripada berbilang peranti dan muat turun kelompok ke rak buku Anda boleh membacanya dengan atau tanpa Internet, supaya semua orang boleh menemui lebih banyak pengetahuan daripadanya . Sekarang editor memperincikannya dalam talian Promosikan kaedah melihat katalog untuk rakan membaca WeChat. 1. Buka buku yang anda ingin lihat katalog dan klik di bahagian tengah buku. 2. Klik ikon tiga baris di sudut kiri bawah. 3. Dalam tetingkap pop timbul, lihat katalog buku
