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!
總結
以上是生活随笔為你收集整理的python os模块详细_Python文件系统功能--os模块详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python初步入门_python如何入
- 下一篇: html数据分析表格api_Python