Python文件系统功能--os模块详解

文件系统功能:os模块内置属性方法

1、目录相关

chdir():改变工作目录

chroot(): 设定当前进程的根目录

listdir(): 列出指定目录下的所有文件名

mkdir(): 创建指定目录

makedirs(): 创建多级目录

getcwd():获取当前工作目录

rmdir():删除目录

removedirs(): 删除多级目录

用法示例:

In [1]: import os

In [2]: os.

Display all 207 possibilities? (y or n)

os.EX_CANTCREAT      os.O_DSYNC           os.WCONTINUED        os.confstr_names     os.fdopen            os.getsid            os.pardir            os.setpgid           os.sys

os.EX_CONFIG         os.O_EXCL            os.WCOREDUMP         os.ctermid           os.fork              os.getuid            os.path              os.setpgrp           os.sysconf

os.EX_DATAERR        os.O_LARGEFILE       os.WEXITSTATUS       os.curdir            os.forkpty           os.initgroups        os.pathconf          os.setregid          os.sysconf_names

os.EX_IOERR          os.O_NDELAY          os.WIFCONTINUED      os.defpath           os.fpathconf         os.isatty            os.pathconf_names    os.setresgid         os.system

os.EX_NOHOST         os.O_NOATIME         os.WIFEXITED         os.devnull           os.fstat             os.kill              os.pathsep           os.setresuid         os.tcgetpgrp

os.EX_NOINPUT        os.O_NOCTTY          os.WIFSIGNALED       os.dup               os.fstatvfs          os.killpg            os.pipe              os.setreuid          os.tcsetpgrp

os.EX_NOPERM         os.O_NOFOLLOW        os.WIFSTOPPED        os.dup2              os.fsync             os.lchown            os.popen             os.setsid            os.tempnam

os.EX_NOUSER         os.O_NONBLOCK        os.WNOHANG           os.environ           os.ftruncate         os.linesep           os.popen2            os.setuid            os.times

os.EX_OK             os.O_RDONLY          os.WSTOPSIG          os.errno             os.getcwd            os.link              os.popen3            os.spawnl            os.tmpfile

os.EX_OSERR          os.O_RDWR            os.WTERMSIG          os.error             os.getcwdu           os.listdir           os.popen4            os.spawnle           os.tmpnam

os.EX_OSFILE         os.O_RSYNC           os.WUNTRACED         os.execl             os.getegid           os.lseek             os.putenv            os.spawnlp           os.ttyname

os.EX_PROTOCOL       os.O_SYNC            os.W_OK              os.execle            os.getenv            os.lstat             os.read              os.spawnlpe          os.umask

os.EX_SOFTWARE       os.O_TRUNC           os.X_OK              os.execlp            os.geteuid           os.major             os.readlink          os.spawnv            os.uname

os.EX_TEMPFAIL       os.O_WRONLY          os.abort             os.execlpe           os.getgid            os.makedev           os.remove            os.spawnve           os.unlink

os.EX_UNAVAILABLE    os.P_NOWAIT          os.access            os.execv             os.getgroups         os.makedirs          os.removedirs        os.spawnvp           os.unsetenv

os.EX_USAGE          os.P_NOWAITO         os.altsep            os.execve            os.getloadavg        os.minor             os.rename            os.spawnvpe          os.urandom

os.F_OK              os.P_WAIT            os.chdir             os.execvp            os.getlogin          os.mkdir             os.renames           os.stat              os.utime

os.NGROUPS_MAX       os.R_OK              os.chmod             os.execvpe           os.getpgid           os.mkfifo            os.rmdir             os.stat_float_times  os.wait

os.O_APPEND          os.SEEK_CUR          os.chown             os.extsep            os.getpgrp           os.mknod             os.sep               os.stat_result       os.wait3

os.O_ASYNC           os.SEEK_END          os.chroot            os.fchdir            os.getpid            os.name              os.setegid           os.statvfs           os.wait4

os.O_CREAT           os.SEEK_SET          os.close             os.fchmod            os.getppid           os.nice              os.seteuid           os.statvfs_result    os.waitpid

os.O_DIRECT          os.TMP_MAX           os.closerange        os.fchown            os.getresgid         os.open              os.setgid            os.strerror          os.walk

os.O_DIRECTORY       os.UserDict          os.confstr           os.fdatasync         os.getresuid         os.openpty           os.setgroups         os.symlink           os.write

In [2]: os.mkdir('/tmp/0526')   #创建目录

In [3]: os.getcwd()            #获取当前路径

Out[3]: '/root'

In [4]: os.chdir('/tmp')         #改变当前路径为/tmp  

In [5]: os.getcwd()

Out[5]: '/tmp'

In [7]: os.makedirs('x/y/z')     #递归创建目录

In [8]: os.rmdir('/tmp/0526')   #删除目录

2、文件相关

mkfifo():创建命令管道

mknod(): 创建设备文件

remove():删除文件

unlink():删除链接文件

rename(): 重命名

stat(): 返回文件状态信息

symlink():创建连接

utime(): 更新时间戳

tmpfile(): 创建并打开(w+b)一个新的临时文件

walk():目录树生成器

用法示例:

In [1]: import os     

In [2]: os.getcwd()       

Out[2]: '/root'

In [3]: os.chdir('/field/')    #切换目录到/field/

In [4]: os.getcwd()

Out[4]: '/field'

In [6]: os.listdir('/field/')   #列出/field/目录下的文件

Out[6]: ['passwd', 'tmp.txt', 'test.unl','test0526.txt']

In [7]: os.remove('/field/tmp.txt')   #删除/field/目录下的tmp.txt文件

In [8]: os.listdir('/field/')

Out[8]: ['passwd', 'test.unl','test0526.txt']

In [9]: os.stat('/field/test.unl')     #查询/field/目录下的test.unl文件详细信息

Out[9]: posix.stat_result(st_mode=33188,st_ino=89994, st_dev=2050L, st_nlink=1, st_uid=0, st_gid=0, st_size=25,st_atime=1527341763, st_mtime=1527341763, st_ctime=1527341779)

In [10]:os.rename('/field/test.unl','/field/newtest.unl')  #重命名test.unlnewtest.unl

In [11]: os.listdir('/field/')

Out[11]: ['passwd', 'newtest.unl','test0526.txt']

In [12]: os.symlink('newtest.unl','test.unl')   #newtest.unl创建软链接test.unl

[root@test field]# ll

总用量 12

-rw-r--r-- 1 root root   25 5月  26 21:36 newtest.unl

-rw-r--r-- 1 root root 1966 5月  26 21:36 passwd

-rw-r--r-- 1 root root   70 5月  26 21:36 test0526.txt

lrwxrwxrwx 1 root root   11 5月  26 21:42 test.unl -> newtest.unl

In [13]: os.listdir('/field/')

Out[13]: ['passwd', 'test.unl','newtest.unl', 'test0526.txt']

In [14]: os.unlink('test.unl')         #删除链接test.unl

In [15]: os.listdir('/field/')

Out[15]: ['passwd', 'newtest.unl','test0526.txt']

[root@test field]# ll

总用量 12

-rw-r--r-- 1 root root   25 5月  26 21:36 newtest.unl

-rw-r--r-- 1 root root 1966 5月  26 21:36 passwd

-rw-r--r-- 1 root root   70 5月  26 21:36 test0526.txt

In [16]: g1 = os.walk('/field/')    #生成一个目录树

In [17]: g1.next()

Out[17]: ('/field/', ['0526', 'testdir'],['passwd', 'newtest.unl', 'test0526.txt'])

3、访问权限相关

access(path, mode): 查看是否具备访问权限

chmod(path, mode): 修改权限

chown(path, uid, gid):修改属主,属组

umask(): 设置默认权限模式、

用法示例:

In [22]: os.access('passwd',0)        #查看root是否有passwd访问权限

Out[22]: True

In [23]: os.access('passwd',500)      #查看500用户是否有passwd访问权限

Out[23]: False

In [24]: os.chmod('passwd',0755)     #修改passwd权限为755

In [25]: os.chown('passwd',500,500)   #修改文件属主属组为500

[root@test field]# ll passwd

-rwxr-xr-x 1 root root 1966 5月  26 21:36 passwd

[root@test field]# id field

uid=500(field) gid=500(field) 组=500(field)

[root@test field]# ll passwd

-rwxr-xr-x 1 field field 1966 5月  26 21:36 passwd

4、文件描述符相关

open(filename, flag [, mode=0777]) -> fd:底层操作系统打开一个文件,库中的函数打开一个文件

read():较底层IO的读操作

write():较底层IO的写操作

5、设备文件相关

makedev(major, minor): 创建设备文件

major(device):从指定设备获取主设备号,device设备号

minor(device):从指定设备获取从设备号

用法示例

In [1]: os.major(61)

Out[1]: 0

In [2]: os.major(610)

Out[2]: 2

In [3]: os.minor(610)

Out[3]: 98

In [4]: os.minor(61)

Out[4]: 61Out[30]: 2

6、os.path文件路径相关属性方法

basename(): 路径基名

dirname(): 路径目录名

join(): 构建绝对路径

split(): 返回dirname(),basename()元组

splitext(): 返回(filename,extension)元组

用法示例

例1:常见方法使用

In [1]: import os.path

In [2]: os.path.

os.path.abspath                     os.path.ismount

os.path.altsep                      os.path.join

os.path.basename                    os.path.lexists

os.path.commonprefix                os.path.normcase

os.path.curdir                      os.path.normpath

os.path.defpath                     os.path.os

os.path.devnull                     os.path.pardir

os.path.dirname                     os.path.pathsep

os.path.exists                      os.path.realpath

os.path.expanduser                  os.path.relpath

os.path.expandvars                  os.path.samefile

os.path.extsep                      os.path.sameopenfile

os.path.genericpath                 os.path.samestat

os.path.getatime                    os.path.sep

os.path.getctime                    os.path.split

os.path.getmtime                    os.path.splitdrive

os.path.getsize                     os.path.splitext

os.path.isabs                       os.path.stat

os.path.isdir                      os.path.supports_unicode_filenames

os.path.isfile                      os.path.walk

os.path.islink                      os.path.warnings

In [2]:os.path.dirname('/etc/sysconfig/network-scripts')   #查看路径目录名

Out[2]: '/etc/sysconfig'

In [3]:os.path.basename('/etc/sysconfig/network-scripts')  #查看路径基名

Out[3]: 'network-scripts'

In [4]: dir1 =os.path.dirname('/etc/sysconfig/network-scripts')

In [5]: file1 =os.path.basename('/etc/sysconfig/network-scripts')

In [6]: print dir1, file1

/etc/sysconfig network-scripts

In [7]: os.path.join(dir1,file1)  

#使用os.path.join(dir1,file1)联合路径目录名和基名,构建绝对路径

Out[7]: '/etc/sysconfig/network-scripts'

In [8]: os.listdir('/field/')

Out[8]: ['0526', 'passwd', 'testdir','newtest.unl', 'test0526.txt']

例2:使用绝对路径打印/field/下文件

In [9]: for filename inos.listdir('/field/'):

  ...:     printos.path.join('/field',filename)

  ...:    

/field/0526

/field/passwd

/field/testdir

/field/newtest.unl

/field/test0526.txt

In [10]: os.path.split('/field/passwd')

Out[10]: ('/field', 'passwd')

7、文件信息相关

getatime():最近一次访问时间

getctime():文件状态最后一次被改变的时间

getmtime():文件内容最后一次被修改的时间

getsize(): 返回文件的大小

8、文件查询相关

exists(): 判断指定文件是否存在

isabs(): 判断指定的路径是否为绝对路径

isdir(): 是否为目录

isfile(): 是否为文件

islink(): 是否符号链接

ismount(): 是否为挂载点

samefile(): 两个路径是否指向了同一个文件

应用实例

判断文件是否存在,存在则打开,不存在则新建,

让用户通过键盘反复输入多行数据,追加保存至此文件中,并使用“q”和“quit”控制输入

[root@test field]# ls

0526 newtest.unl  passwd  test0526.txt testdir

[root@test field]# vim test.py

#!/usr/bin/python27

#

import os

import os.path

filename = '/field/tmp.txt'

if os.path.exists(filename):

   f1 = open(filename,'a+')

else:

   f1 = open(filename,'w+')

while True:

   line = raw_input('Please say something>')

   if line == 'q' or line == 'quit':

       break

   f1.write(line+'\n')

f1.close()

[root@test field]# ./test.py

Please say something>hello world!

Please say something>how are you ?

Please say something>how old are you ?

Please say something>i am field.

Please say something>quit

[root@test field]# cat tmp.txt

hello world!

how are you ?

how old are you ?

i am field.

[root@test field]# ./test.py

Please say something>yes sir!

Please say something>thanks!

Please say something>q

[root@test field]# cat tmp.txt

hello world!

how are you ?

how old are you ?

i am field.

yes sir!

thanks!

猜你喜欢

转载自blog.csdn.net/Field_Yang/article/details/80586748