Python os.mkdir()與os.makedirs()的使用區別

os.makedir(path)和os.makedirs(path)

今天工作中將hadoop文件同步到服務器磁盤,由於文件類別目錄較多,遷移文件時需要判斷是否存在

這裡有兩個方法os.mkdir(path)和os.makedirs(path)

os.mkdir(path)

他的功能是一級一級的創建目錄,前提是前面的目錄已存在,如果不存在會報異常,比較麻煩,但是存在即有他的道理,當你的目錄是根據文件名動態創建的時候,你會發現他雖然繁瑣但是很有保障,不會因為你的一時手抖,創建而創建瞭雙層或者多層錯誤路徑,

import os 
os.mkdir('d:\hello')  # 正常
os.mkdir('d:\hello\hi') # 正常
 
# 如果d:\hello目錄不存在
# 則os.mkdir('d:\hello\hi')執行失敗

os.makedirs(path)

單從寫法上就能猜出他的區別,他可以一次創建多級目錄,哪怕中間目錄不存在也能正常的(替你)創建,想想都可怕,萬一你中間目錄寫錯一個單詞………

import os 
os.makedirs('d:\hello')  # 正常
os.makedirs('d:\hello\hi') # 正常
 
# 如果d:\hello目錄不存在
# 則os.makedirs('d:\hello\hi') # 仍然正常

各有優缺點,根據自己需要選擇使用。

補充:Python中os.path和os.makedirs的運用(判斷文件或文件夾是否存在,創建文件夾)

import os
import numpy as np
data = np.array([1, 2, 3])
if not os.path.exists("./data/"):
  print("# path not exists")
  os.makedirs("./data/")
  if not os.path.exists("./data/data.npy"):
    print("# data.npy not exists")
    np.save("./data/data.npy", data)
 
print("# path exists? :", os.path.exists("./data/"))
print("# data.npy exists? :", os.path.exists("./data/data.npy"))

運行結果:

# path not exists
# data.npy not exists
# path exists? : True
# data.npy exists? : True

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: