跟老齐学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'

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Qu'il s'agisse d'un article, d'un article ou d'un tutoriel, le point fort de tout document est le titre et bien sûr la table des matières. Il décrit la structure générale du document afin que les utilisateurs puissent accéder à l'endroit et à ce qu'ils s'attendent à lire dans le document. C'est également une bonne pratique d'ajouter une table des matières à la plupart des documents pour leur donner un aspect plus professionnel. Aujourd'hui, tout se passe en ligne et les gens utilisent Google Docs pour créer la plupart des documents. De nombreux utilisateurs ne savent toujours pas comment insérer ou ajouter une table des matières dans Google Docs. Par conséquent, nous proposons cet article pour expliquer comment créer ou insérer une table des matières dans Google Docs. Comment insérer une table des matières dans Google Docs Étape 1 : Cliquez ici pour visiter Google Docs Online. Étape 2 : Si

Utilisez la fonction File.isDirectory() de Java pour déterminer si un fichier existe et est de type répertoire. En programmation Java, vous rencontrez souvent des situations dans lesquelles vous devez déterminer si un fichier existe et est de type répertoire. Java fournit la classe File pour gérer les fichiers et les répertoires. La fonction isDirectory() peut nous aider à déterminer si un fichier est un type de répertoire. La fonction File.isDirectory() est une méthode de la classe File. Sa fonction est de déterminer le fichier actuel.

La fonction glob() en PHP est utilisée pour rechercher des fichiers ou des répertoires et constitue une puissante fonction d'opération de fichiers. Il peut renvoyer le chemin d'un fichier ou d'un répertoire en fonction d'une correspondance de modèle spécifiée. La syntaxe de la fonction glob() est la suivante : glob(pattern, flags) où pattern représente la chaîne de modèle à rechercher, qui peut être une expression générique, telle que *.txt (fichiers correspondants se terminant par .txt), ou un chemin de fichier spécifique. flags est un paramètre facultatif utilisé pour contrôler la fonction

Introduction à la fonction PHP — rename() : Renommer des fichiers ou des répertoires Introduction : En PHP, la fonction rename() est utilisée pour renommer des fichiers ou des répertoires. Il fournit un moyen simple de modifier le nom d’un fichier ou d’un répertoire. Qu'il s'agisse d'un seul fichier ou d'un répertoire entier, vous pouvez utiliser cette fonction pour effectuer une opération de renommage. Le processus de renommage peut être facilement réalisé en spécifiant le nom du fichier ou du répertoire source et le nom cible. Syntaxe : boolrename(string$source,str

Comment vérifier si le répertoire est vide sous Linux : 1. Entrez dans le terminal Linux ; 2. Exécutez "res=`ls -A $dir` if [ -z $res ]; puis echo "$dir ..."else echo La méthode "$ La dir..."fi" peut déterminer si le répertoire est vide.

Sélectionnez le style du catalogue dans Word, et il sera automatiquement généré une fois l'opération terminée. Analyse 1. Accédez à Word sur votre ordinateur et cliquez pour importer. 2Après avoir entré, cliquez sur le répertoire du fichier. 3 Sélectionnez ensuite le style du répertoire. 4. Une fois l'opération terminée, vous pouvez voir que le répertoire de fichiers est automatiquement généré. Supplément : la table des matières de l'article de résumé/notes est générée automatiquement, y compris les titres de premier niveau, les titres de deuxième niveau et les titres de troisième niveau, généralement pas plus que les titres de troisième niveau.

Utilisez la fonction path/filepath.Split pour diviser le chemin en deux parties : répertoire et nom de fichier Lors du développement de programmes ou du traitement de fichiers, il est souvent nécessaire de diviser le chemin en deux parties : répertoire et nom de fichier. En langage Go, vous pouvez utiliser la fonction Split dans le package path/filepath pour réaliser cette fonction. Cet article présentera l'utilisation de la fonction Split et donnera des exemples de code. La fonction Split est définie comme suit : funcSplit(pathstring)(di

La version mobile de WeChat Reading App est un très bon logiciel de lecture. Ce logiciel fournit de nombreux livres et ouvrages. Vous pouvez les lire à tout moment, n'importe où avec une recherche en un clic et les lire en ligne. Tous sont officiellement autorisés et de différents types. des livres sont soigneusement rangés et profitez d’une atmosphère de lecture confortable et relaxante. Changez les modes de lecture de différents scénarios, mettez à jour les derniers chapitres du livre en continu chaque jour, prenez en charge la connexion en ligne à partir de plusieurs appareils et le téléchargement par lots sur l'étagère. Vous pouvez le lire avec ou sans Internet, afin que tout le monde puisse en découvrir plus de connaissances. Désormais, l'éditeur le détaille en ligne. Promouvoir la méthode de visualisation du catalogue pour les partenaires de lecture de WeChat. 1. Ouvrez le livre dont vous souhaitez consulter le catalogue et cliquez au milieu du livre. 2. Cliquez sur l'icône à trois lignes dans le coin inférieur gauche. 3. Dans la fenêtre contextuelle, affichez le catalogue de livres
