Python之sys&os模塊

os模塊:
python

 •  負責程序與操做系統的交互,提供了訪問操做系統底層的接口linux

 

1、與文件有關的方法

(1)刪除文件

    •  使用.remove()方法windows

os.remove(‘f’) #刪除文件
os.rmdir('f)  #刪除文件夾

 (2)重命名文件函數

    • 使用.rename()方法測試

os.rename(old,new) #重命名

 

(3)建立文件夾

     •  使用.mkdir().makedirs()方法編碼

os.mkdir('python') #建立文件夾
os.makedirs('python2')

 .mkdir().makedirs()區別spa

      • .mkdir()只能建立單層目錄,且若是父目錄不存在,直接建立子目錄會報錯操作系統

      • .makedirs()能夠同時建立多層目錄code

#分別用他們2個建立一個2層的目錄:  china/beijing
os.mkdir('china/beijing') #結果:報錯【只有一層會建立,兩層以上就會報錯】
os.makedirs('china/beijing') #結果:建立成功【多層不會報錯】

(4)刪除文件夾

   •  使用.removedirs()方法blog

os.removedirs('china') #結果:報錯,由於China裏面還有beijing文件夾

 

(5)獲取到路徑下的內容

   •  使用.listdir()方法,能夠得到路徑下第一層的文件夾和文件

print(os.listdir()) #顯示該目錄下的全部文件夾和文件
#若是不寫路徑,默認獲取到的是當前路徑下的全部文件夾和文件

print(os.listdir('..')  #路徑能夠寫以..  也能夠是絕對路徑

(6)幾種判斷方法

    •  判斷是不是文件夾,使用.path.isdir()方法

print(os.path.isdir('f:\\2.工做'))#判斷是不是文件夾

   •   判斷是不是文件,使用.path.isfile()方法

print(os.path.isfile('筆記.py'))#判斷是不是文件

  •  判斷文件夾或文件是否存在,使用.path.exists()方法

print(os.path.exists('china'))#判斷文件或者文件夾是否存在

 使用.path.isdir().path.isfile()方法時,若是該文件(夾)不存在,結果顯示爲False;若是該文件(夾)不是文件夾,結果顯示爲False。所以這兩種方法還能夠判斷文件(夾)是否存在。

(7)循環獲取路徑、文件夾、文件

      • 使用.walk()方法,能夠遍歷取到當前路徑以及路徑中的全部路徑、文件夾、文件

res=os.walk(r'C:\Users\Bai\PycharmProjects\untitled\博客') #r表示後面是路徑,「\」不轉義  
res=os.walk(r'C:\Users\Bai\PycharmProjects\untitled\博客')
for cur_path,dirs,files in res: #它有3個參數,分別表明當前目錄、當前文件夾、當前文件
    print('當前目錄',cur_path)
    print('當前文件夾',dirs)
    print('當前文件',files)
    print('='*50)  #打印50個‘=’

 

 

2、小練習

一、統計一個路徑下面有多少個python文件:

res = os.walk(r'C:\Users\Bai\PycharmProjects\untitled\博客')
count = 0
for cur_path, dirs, files in res:
    print('當前目錄下面的全部文件', files)
    for i in files:
        if (i.endswith('.py')):
            count += 1
print('共有%d個Python文件' % count)

 

 

二、找到具備關鍵詞的文件所在路徑:

res = os.walk(r'C:\Users\Bai\PycharmProjects\untitled\博客')
count = 0
for cur_path, dirs, files in res:
    print('當前目錄下面的全部文件', files)
    print('='*50)
    for f in files:
        if '.mp4' in f:
            print(cur_path) #找到.mp4所在路徑

三、封裝一個函數,傳入路徑和關鍵詞,查找文件的路徑:

#查找文件的路徑
def find_file(path,keyword):
    res=os.walk(path)
    for cur_path,dirs,files in res:
        for file_name in files:
            if keyword in file_name:
                print('該文件在%s下面'%cur_path)

find_file('f:\\','測試用例模板.xls')

 

3、與操做系統命令有關的方法

(1)執行操做系統命令

       (1)使用.system()方法

os.system('ipconfig') #windows下查找ip  Mac下查找ifconfig
 os.system('dir') #windows下查找當前路徑 #在哪一個操做系統下,.system裏的變量就用哪一個操做系統裏的命令

 

      (2)使用.popen()方法

res=os.popen('ipconfig').read()  #windows下獲取ip地址,沒有亂碼, .read()打印出來,能夠拿到返回結果
print('res結果:',res)

 

 

    (3)區別:

  .system()無返回值,打印時獲取不到命令的結果;.popen()能夠獲取到命令結果,但必須先調用.read()方法。

  若是不須要返回命令結果,那直接使用.system()方法便可。

res=os.system('ipconfig')
print('res...',res)
#結果:res... 0
#0表示這條命令執行成功了,但打印不出該命令的結果

 

res2=os.popen('ipconfig').read() #獲取結果要使用.read()讀取後再打印,不然顯示的是二進制編碼
print(res2)
#結果: 
#res2... 
#Windows IP 配置
#
#
#以太網適配器 以太網:
#
#   媒體狀態  . . . . . . . . . . . . : 媒體已斷開鏈接
#  鏈接特定的 DNS 後綴 . . . . . . . : DHCP HOST
#
#無線局域網適配器 本地鏈接* 2:
...

 

(2)拼路徑

   •   使用os.path.join()方法

print(os.path.join('china','a.py'))
#結果:china\a.py   windows下
#結果:china/a.py   linux下

 

* 該方法的優勢是能夠跨平臺使用同一個命令.

(3)分割路徑

   •   使用.os.path.split()方法,用於分割路徑和文件(夾)名

res=os.path.split(r'C:\Users\Bai\PycharmProjects\untitled\博客')
print(res)

#結果('C:\\Users\\Bai\\PycharmProjects\\untitled', '博客')
#會把最後一個【‘博客’】分割出來

(4)取父目錄

   •   使用os.path.dirname()方法

res=os.path.dirname(r'china\beijing\haidian\changping\a.py')
print(res)
#結果爲:china\beijing\haidian\changping
#取的是【a.py以前的路徑】

(5)取文件大小

   •   使用os.path.getsize()方法,能夠用該方法判斷文件是否爲空

print(os.path.getsize('筆記.txt'))
#結果爲:839

(6)取當前的目錄

   •   使用os.getcwd()方法

print(os.getcwd())

#結果:C:\Users\Bai\PycharmProjects\untitled\摩羯座\day5

(7)進入另外一個路徑

   •   使用os.chdir()方法

res=os.getcwd() #取當前的目錄
print(res)
#結果爲:F:\0.script repository\Python\jnz\day06
print(os.chdir(r'F:\0.script repository\Python\jnz\day05'))#進入到哪一個目錄下
結果爲:None
res=os.getcwd() #取當前的目錄
print(res)
#結果爲:F:\0.script repository\Python\jnz\day05
相關文章
相關標籤/搜索