1. 程式人生 > >python基礎-檔案目錄操作

python基礎-檔案目錄操作

1.檢視系統資訊

>>>import os
>>>os.name  #作業系統型別
nt

posix,表示系統是Linux、Unix或OS,nt表示windows系統

>>>os.uname()

獲取系統詳細資訊,但uname()不能再windows上使用。

2.環境變數

環境變數都儲存在os.environ這個變數中

>>>os.environ

如果要獲取某個環境變數的值,可以呼叫os.environ.get('key')

>>>os.environ.get('PATH')

3.操作檔案和目錄

#檢視當前目錄的絕對路徑
>>>os.path.abspath('.')
'D:\\py\\www'

#檢視當前目錄第二種方法
>>>os.getcwd()
'D:\\py\\www'

#改變當前目錄  如果改變的目錄不存在,會報錯
>>>os.chdir('D:\\py')
'D:\\py'

#將多個路徑組合後返回(用正確的路徑分隔符)
>>>os.path.join('/root','python','testdir')   #linux系統
/root/python/testdir

#建立一個目錄
>>
>os.mkdir('/root/python/test1') #刪除目錄 >>>os.rmdir('/root/python/test1') #只能刪除空資料夾 >>>shutil.rmtree(path) #遍歷刪除資料夾 得引入shutil模組 #遍歷建立目錄 >>>os.makedirs('/root/test/test1/test11') 1.os.path.isabs(path) #判斷是否是絕對路徑 2.os.path.relpath(path,start) #返回從start路徑到path的相對路徑的字串,如果沒有提供start,就是用當前目錄作為start
3.os.path.dirname(path) #返回path最後一個斜槓之前的所有內容 4.os.path.basename(path) #返回path最後一個斜槓之後的所有內容 5.os.path.split() #同時獲得一個路徑的目錄名和檔名,用元組儲存 >>>path='/root/python/test/a.py' >>>os.path.split(path) ('/root/puthon','a.py') 6.os.path.splitext() #取檔案字尾 >>>path='/root/python/test/a.py' >>>os.path.splitext() ('/root/python/test/a','.py') 6.os.path.getsize(filepath) #獲取檔案的大小(單位位元組) 7.os.listdir(path) #返回目錄下所有的目錄和檔案 #檢查路徑 1.os.path.exists(path) #檔案或目錄是否存在 2.os.path.isfile(file) #file存在,並且是檔案,則返回True 3.os.path.isdir(path) #path存在,並且是目錄,則返回True #讀取檔案 1.os.read(file) #讀取所有內容 2.os.readlines() #將檔案所有內容存入一個list,每一行就是一個元素,並且每行內容後面還會帶一個'\n' #利用shelve模組儲存變數 利用shelve模組,可以將Python程式中的變數儲存到二進位制的shelf問價中,這樣,就可以從硬碟中回覆變數的資料 #引入shelve >>>import shelve >>>shelfFile=shelve.open('mydata') >>>cats=['xm','xh','xb'] >>>shelfFile['cats']=cats >>>shelfFile.close() #在windows上執行這些程式碼,當前目錄會出現mydata.bak,mydata.dat,mydata.dir三個檔案 #在OS上,只會建立一個mydata.db檔案 >>>shelfFile=shelve.open('mydata') >>>shelfFile['cats'] ['xm','xh','xb'] >>>shelfFile.close()

shutil模組

1.shutil.copy(source,destination)

將路徑source處的檔案複製到路徑destination處的目錄,如果destination是一個檔名,則複製的同時也會重新命名
>>>import shutil,os
>>>shutil.copy('D:\\py\\www\\count1.py','D:\\py\\www\\count2.py') #複製並且重新命名

2.shutil.copytree(source,destination)複製整個資料夾,以及它的子資料夾和檔案

3.shutil.move(source,destination),將路徑source處的檔案或資料夾移動到destination處

>>>import shutil,os
>>>shutil.move('D:\\py\\www\\count1.py','D:\\py\\www\\count3.py') #相當於重新命名
>>>shutil.move('D:\\py\\www\\count1.py','D:\\py\\') #移動檔案
#如果py目錄不存在,則會把count1.py重新命名為py

永久刪除檔案和資料夾

os.unlink(filepath) #刪除檔案

os.rmdir(path) #刪除資料夾,但必須得是空資料夾

shutil.rmtree(path) #刪除資料夾,包括它的子資料夾和檔案

str.endswith(shuffix[,start[,end]]) 
shuffix 可以是一個字串或字元
start 字串中開始位置,即從str中的哪個位置開始查,預設從開頭開始查
end 字串結束位置

endswith()可以用來判斷檔案的字尾名
#刪除所有的.txt檔案
if(filename.endswith('.txt'):
    os.unlink(filename)

遍歷目錄樹

os.walk(path);
os.walk()在迴圈的每次迭代中,返回三個值:
    1.當前那資料夾名稱的字串
    2.當前資料夾子資料夾的字串的列表
    3.當前資料夾中檔案的字串的列表

所以可以使用for迴圈遍歷目錄樹
import os
path='D:\\py\\www'
for folderName,subfolders,filenames in os.walk(path):
    print('當前目錄為:'+folderName)

    for subfolder in subfolders:
        print('子目錄:'+folderName+': '+subfolder)
    for filename in filenames:
        print('子檔案:'+folderName+': '+filename)