Python OS模塊


os模塊

舉例介紹os模塊中 os.name、os.uname、os.listdir、os.stat、os.chmod、os.chown 六種方法的使用

 

os.name
os.uname()
sys.platform
os.listdir(path=None)
os.stat(path, *, dir_fd=None, follow_symlinks=True)
os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

 

 os.name,os.uname()

#linux
In [1]: import os
In [2]: os.name #windows是nt,linux是posix
In [3]: os.uname() #linux支持顯示

  

os.listdir(path=None)

#linux
In [4]: import sys
In [5]: sys.platform #windows顯示win32,linux顯示linux
In [6]: os.listdir() #不給參數默認輸出當前路徑下所有文件
In [7]: os.listdir('/home/python') #可以指定目錄

  

os 也有open、read、write等方法,但是太低級,建議使用內建函數open、read、write。

 

os.stat(path, *, dir_fd=None, follow_symlinks=True)

follow_symlinks True返回文件本身信息,Flase且如果是軟鏈接則顯示軟鏈接本身。

#linux下先創建一個軟鏈接文件
$ touch test
$ ln -s test t1


In [8]: os.stat('test')    #查看文件狀態信息
Out[8]: os.stat_result(st_mode=33188, st_ino=1478876, st_dev=64768, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1509156704, st_mtime=1509156704, st_ctime=1509156704)

In [9]: os.stat('t1')   #不指定follow_symlinks選項(True)等同linux下stat -L功能
Out[9]: os.stat_result(st_mode=33188, st_ino=1478876, st_dev=64768, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1509156704, st_mtime=1509156704, st_ctime=1509156704)

In [13]: os.stat('t1',follow_symlinks=False) #如果follow_symlinks指定為False,並且路徑的最后一個元素是符號鏈接,chmod將修改符號鏈接本身,而不是鏈接指向的文件。
Out[13]: os.stat_result(st_mode=41471, st_ino=1423520, st_dev=64768, st_nlink=1, st_uid=0, st_gid=0, st_size=4, st_atime=1509156724, st_mtime=1509156722, st_ctime=1509156722)

In [15]: oct(33188)   #十進制的權限33188轉為八進制,權限644
Out[15]: '0o100644'

In [16]: oct(41471)   #權限777
Out[16]: '0o120777'

In [17]: !stat test
權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)

In [18]: !stat t1
權限:(0777/lrwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root)

  

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

 

In [26]: with open('test2','w') as f: #創建一個文件
...: f.write('test2')
...:

In [29]: with open('test2','r') as f:
...: content = f.read()
...: print(content)
...: 
test2

In [30]: !stat test2
權限:(0664/-rw-rw-r--) Uid:( 1000/ python) Gid:( 1000/ python)

In [32]: os.chmod('test2',0o777)   #修改權限

In [33]: os.stat('test2')
Out[33]: os.stat_result(st_mode=33279, st_ino=1423521, st_dev=64768, st_nlink=1, st_uid=1000, st_gid=1000, st_size=5, st_atime=1509158320, st_mtime=1509158274, st_ctime=1509158374)

In [34]: !stat test2
權限:(0777/-rwxrwxrwx) Uid:( 1000/ python) Gid:( 1000/ python)

  

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

改變文件的屬主、屬組,但需要有足夠的權限(root?)

In [44]: os.chown('test2',1001,1001) #權限不足,當前運行用戶是python
---------------------------------------------------------------------------
PermissionError Traceback (most recent call last)
<ipython-input-44-ebd0d03ffe74> in <module>()
----> 1 os.chown('test2',1001,1001)

PermissionError: [Errno 1] Operation not permitted: 'test2'

  

End


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM