文件系统功能: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.unl为newtest.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 in os.listdir('/field/'):
...:
print os.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!