1. 程式人生 > >python 常用的OS模組、shutil庫(用於檔案操作)

python 常用的OS模組、shutil庫(用於檔案操作)

說明:
shutil庫為python內建庫,是一個對檔案及資料夾高階操作的庫,可以與os庫互補完成一些操作,如資料夾的整體複製,移動資料夾,對檔案重新命名等。

1、建立

os.mkdir(path+dir_name)
建立目錄(建立一級目錄)

os.makedirs(path+一級目錄+子目錄)
建立多級目錄。

2、刪除

os.remove(path)
刪除檔案

os.rmdir(path)
刪除目錄,目錄必須為空,否則報錯;

os.removedirs(path)
刪除多級目錄,刪除空資料夾 #資料夾非空時,會報錯,使用時候與rmdir沒有差異!!需要在理解!!!!!!!!!!!!!!!!!!!!!!!!!!

shutil.rmtree(path)
遞迴刪除資料夾,資料夾內可以 有內容

3、複製

shutil.copyfile(“oldfile”,”newfile”)
oldfile和newfile都只能是檔案

shutil.copy(“oldfile”,”newfile or 目錄”) (將要複製的檔案路徑;將要複製到的位置)
oldfile只能是資料夾,newfile可以是檔案,也可以是目標目錄
返回複製的檔案路徑

shutil.copytree(“olddir”,”newdir”)
olddir和newdir都只能是目錄,且newdir必須不存在

4、移動

shutil.move(“oldpos”,”newpos”)#
舊位置、新位置;

5、遍歷

os.walk(path)
返回一個物件,每個部分都是一個三元組 (‘目錄x’,[目錄x下的目錄list],目錄x下面的檔案) .需要迴圈遍歷,才可以將walk內容顯示

a= os.walk("/home/mengyue/PycharmProjects")
for i in a:
    print(i)

6、判斷資料夾是否存在、是否是資料夾、是否是檔案

os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False。

os.path.exists
('c:\\csv\\test.csv') #False

os.path.isfile(path)
如果path是一個存在的檔案,返回True。否則返回False。

 os.path.isfile('c:\\boot.ini')#True
 os.path.isfile('c:\\csv\\test.csv')# False
 os.path.isfile('c:\\csv\\')  #False

os.path.isdir(path)
如果path是一個存在的目錄,則返回True。否則返回False。

 os.path.isdir('c:\\')  #True
 os.path.isdir('c:\\csv\\')#False

7、路徑獲取

os.path.abspath(path)
返回path規範化的絕對路徑。
(我一般,選擇某一個檔案,open in termial ; pwd ,獲取絕對路徑;)

os.curdir #(./)
返回當前工作目錄

os.getcwd()
返回當前目錄,所執行指令碼的目錄

def list_files():
    start_dir = input('請輸入待查詢的初始目錄:') 
    # /home/mengyue/PycharmProjects/remark/V1.5/verify_pic
#/home/mengyue/PycharmProjects/remark/V1.5  指令碼所在位置
list_files()
program_dir = os.getcwd()
print(program_dir)  #/home/mengyue/PycharmProjects/remark/V1.5
print(os.curdir)  # .
print(os.path.abspath(os.curdir)) 
 #/home/mengyue/PycharmProjects/remark/V1.5

os.path.isabs(path)
如果path是絕對路徑,返回True。

os.path.dirname(path)
返回path的上一級目錄

os.path.basename(path)
返回path最後的檔名。即os.path.split(path)的第二個元素。

os.path.split(path)
將path分割成目錄和檔名二元組返回
(目錄,檔名(或者資料夾名稱))

#print(os.path.dirname("/home/mengyue/PycharmProjects/remark/V1.5"))
#/home/mengyue/PycharmProjects/remark
# print(os.path.basename("/home/mengyue/PycharmProjects/remark/V1.5"))  
#V1.5
# print(os.path.split("/home/mengyue/PycharmProjects/remark/V1.5"))
 #('/home/mengyue/PycharmProjects/remark', 'V1.5')

os.path.commonprefix(list)
返回list中,所有path共有的最長的路徑。

os.path.commonprefix(['/home/td','/home/td/ff','/home/td/fff'])
'/home/td'

os.path.join(path1[, path2[, …]])**
將多個路徑組合後返回,第一個絕對路徑之前的引數將被忽略。

 os.path.join('c:\\', 'csv', 'test.csv')
'c:\\csv\\test.csv'
 os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv')
'c:\\csv\\test.csv'
os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')
'/home/aa/bb/c'

os.path.normcase(path)*
在Linux和Mac平臺上,該函式會原樣返回path,在windows平臺上會將路徑中所有字元轉換為小寫,並將所有斜槓轉換為飯斜槓。

os.path.normcase('c:/windows\\system32\\')
'c:\\windows\\system32\\'

os.path.normpath(path)**
規範化路徑。

os.path.normpath('c://windows\\System32\\../Temp/')
'c:\\windows\\Temp'

os.path.splitdrive(path)**
返回(drivername,fpath)元組

os.path.splitdrive('c:\\windows')
('c:', '\\windows')

os.path.splitext(path)
分離檔名與副檔名;預設返回(fname,fextension)元組,可做分片操作

os.path.splitext('c:\\csv\\test.csv')
('c:\\csv\\test', '.csv')

os.path.getsize(path)
返回path的檔案的大小(位元組),如果是目錄,返回OL

 os.path.getsize('c:\\boot.ini')
299L

os.path.getatime(path)**
返回path所指向的檔案或者目錄的最後存取時間。

os.path.getmtime(path)*
返回path所指向的檔案或者目錄的最後修改時間

其他重要的

os.chdir(path)
改變當前工作目錄到path

os.listdir()
os.listdir(path)返回path指定的資料夾包含的檔案或資料夾的名字列表

os.sep
更改作業系統中的路徑分隔符,比如window是\,linux /,macOS

os.linesep
給出當前平臺使用的終止符,win: ‘\r\n’,Linux使用’\n’而Mac使用’\r’

os.rename(src, dst)
重新命名檔案或目錄,從 src 到 dst

相關推薦

no