python os模块详细_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.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!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值