91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python os模塊的介紹和用法

發布時間:2020-05-27 14:08:46 來源:億速云 閱讀:331 作者:鴿子 欄目:編程語言

python官方庫中比較重要的兩個模塊是sys和os,今天我們來看一下另外一個重要模塊os的用法。
os模塊是直接和系統調用或者說系統提供的api打交道的模塊,因此可以把它的功能分為3大類,分別是:

  1. POSIX工具,即處理文件系統相關的功能
  2. 提供跨平臺能力的功能或函數
  3. 運行系統命令相關的函數

1.  文件系統處理相關函數

一般在做文件或目錄操作的時候,最常用的基本都是增刪改查,os模塊提供了對應的函數如下:

  • os.remove()  刪除文件
  • os.rename()  重命名文件或目錄
  • os.mkdir() / os.makedirs()  創建單個目錄 / 創建多級目錄
  • os.rmdir() / os.removedirs()  刪除空目錄 / 刪除多級空目錄
  • os.copy('_dir', 'newfile') 復制文件或目錄到新的目錄中,
  • os.listdir() 顯示當前目錄下的文件或目錄,如果參數是路徑,那么顯示這個路徑下的文件。
  • os.chdir('/path/to/new/dir')  切換當前工作目錄到新的工作目錄

在上面的代碼中我們可以看到,os模塊提供了對文件的修改、刪除和查詢方法,對目錄提供了創建、刪除、修改和刪除的方法。但是沒有創建文件的方法,這是為什么呢?因為在python中,創建文件一般是通過Python提供的通用open方法來實現的。os.open這個方法有,但是只能打開已有的文件,在文件不存在時會報錯,而不會自動去創建這個文件。

來看一下幾個示例

# 創建文件
>>> f = open('test.txt', 'w')
>>> f.close()
>>> os.listdir()
['test.txt']

# 創建目錄和多級目錄
>>> os.mkdir('t1')
>>> os.makedirs('t1/t2/t3')
>>> 
>>> os.listdir()
['test.txt', 't1']
>>> os.listdir('t1')
['t2']
>>> os.listdir('t1/t2')
['t3']

# 重命名文件
>>> os.rename('test.txt', 'test_rename_func.txt')
>>> os.listdir()
['t1', 'test_rename_func.txt']

# 重命名目錄
>>> os.rename('t1', 'test1')
>>> os.listdir()
['test_rename_func.txt', 'test1']

# 刪除文件
>>> os.remove('test_rename_func.txt')
>>> os.listdir()
['test1']

# 刪除目錄,此時test1為非空目錄,報錯。
>>> os.rmdir('test1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: 'test1'

# 迭代刪除多個空目錄,此時要出給出多個目錄完整路徑
>>> os.removedirs('test1/t2/t3')
>>> os.listdir()
[]

在上面的示例中,我們演示了os模塊中用來增刪改查文件和目錄的相關函數,最后留下一個小問題,非空的目錄該怎么刪除呢?感興趣的同學可以嘗試以下,我們明天來答疑解惑。

2. 提供跨平臺能力的功能或函數

提到跨平臺,可能我們最常遇到的就是兩個東西,一個是換行符,一個是路徑分隔符。
在windows系統中,換行符是 \r\n,而Linux和Unix中,換行符是 \n。在windows中,路徑分隔符是反斜杠 \ ,例如windows系統下的路徑一般是"C:\windows\system32\",而Linux和Unix中,路徑分隔符是斜桿 / 。如果你寫的程序在多個平臺上都可以正常運行,一般會怎么做呢?

看了我們昨天關于sys模塊的同學可能記得,sys模塊有一個platform函數,可以輸出系統版本,那么這個時候就可以根據它的值,來選擇對應的換行符和路徑分隔符。但是因為需要自己來判斷,還是略微有些麻煩。
作為一個程序員,當然是要把麻煩的事情簡單化,os就提供了若干個這樣的跨平臺屬性,如下所示:

  • os.sep  根據系統類型輸出對應的路徑分隔符
  • os.linesep 根據系統類型自動輸出對應的換行符
  • os.pathsep  系統中用來分隔環境變量路徑的符號
  • os.path.join()  用于拼接路徑,并根據系統類型自動返回對應路徑分隔符分隔的路徑;
  • os.path.split() 用于切割路徑,根據系統類型自動選擇對應的分隔符來分割;

我們來看一下這幾個函數的應用示例

# windows系統對應操作符
>>> os.sep, os.linesep, os.pathsep
('\\', '\r\n', ';')

# 切割windows路徑和拼接windows路徑
>>> os.path.split('c:\windows\system32')
('c:\\windows', 'system32')
>>>
>>> os.path.join('c:\windows', 'system32')
'c:\\windows\\system32'

# Linux系統對應操作符
>>> os.sep, os.linesep, os.pathsep
('/', '\n', ':')

# 切割linux路徑和拼接Linux路徑
>>> os.path.split('/root/project/module.py')
('/root/project', 'module.py')
>>> 
>>> os.path.join('/root/project', 'module.py')
'/root/project/module.py'

3. 運行系統命令相關的函數

在文章的最開始,我們說,os是一個很底層的模塊,它會和系統提供的API或者系統調用進行交互。也就是說它可以用來對系統進行管理。它是怎么做到的呢?os提供了一些函數,可以讓你直接調用系統提供的命令,相當于是你直接來操作系統一樣。如下所示:

  • os.system() 在python腳本中運行shell命令
  • os.popen() 運行shell命令并與其輸入流或輸出流相連接,也就是說可以給shell命令提供輸入參數或者獲取它的命令執行結果

下面我們來看一下這兩個函數的用法:
示例1. os.system運行系統命令

>>> result = os.system('ls /')
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
>>> result
0

我們使用一個變量來接收命令是否正確執行的結果。而命令執行后的內容會直接輸出到控制臺上。

如果我們想要把命令執行后的內容都收集起來呢?那么就需要用到os.popen這個函數了,用法如下:

# 所有內容收集為一行
>>> result = os.popen('ls /').read()
>>> result
'bin\nboot\ndev\netc\nhome\nlib\nlib64\nmedia\nmnt\nopt\nproc\nroot\nrun\nsbin\nsrv\nsys\ntmp\nusr\nvar\n'

# 多行內容以列表形式返回
>>> result = os.popen('ls /').readlines()
>>> result
['bin\n', 'boot\n', 'dev\n', 'etc\n', 'home\n', 'lib\n', 'lib64\n', 'media\n', 'mnt\n', 
'opt\n', 'proc\n', 'root\n', 'run\n', 'sbin\n', 'srv\n', 'sys\n', 'tmp\n', 'usr\n', 'var\n']

上面只是演示了這樣兩個簡單的示例,但是根據這樣的用法指導,你還可以使用os的這兩個函數,來調用更復雜的系統命令。來完成python模塊無法完成的任務。這也是為什么python被稱為 "膠水語言" 的原因,因為它可以粘合多種不同樣式的命令

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元朗区| 永昌县| 榕江县| 新巴尔虎右旗| 武义县| 大连市| 桓仁| 清流县| 北票市| 洛扎县| 余江县| 伊宁市| 安平县| 淄博市| 富民县| 平凉市| 肃南| 海门市| 泸州市| 汽车| 陵川县| 东乌珠穆沁旗| 井研县| 株洲市| 宁蒗| 房产| 大姚县| 安岳县| 开化县| 柏乡县| 民勤县| 吉安县| 环江| 诸城市| 崇文区| 保山市| 鱼台县| 龙江县| 壤塘县| 宜丰县| 曲靖市|