python的os模組,切割檔案,資料集分割

2021-10-07 02:23:16 字數 2741 閱讀 9748

os模組是對檔案、檔案路徑的乙個處理模組

1.判斷乙個檔案、路勁是否存在:

os.path.exists(path)
返回乙個布林量,存在則返回1,否則則返回0。

2.新建乙個資料夾:

os.makedirs(path)

#path是乙個路徑,包括你的檔名

3.os.walk() 方法是乙個簡單易用的檔案、目錄遍歷器,可以幫助我們高效的處理檔案、目錄方面的事情。

for path , sub_dirs , files in os.walk(old_path)

:#資料夾下三層檔案,**資料夾的路徑

比如 path = 『g:\研究生課程檔案\資料集\血細胞影象』

但是實際整個路徑是這樣的』g:\研究生課程檔案\資料集\血細胞影象\一級資料夾\1.jpg』

這個時候os.walk返回的path , sub_dirs , files分別是什麼:

path是old_path這個路徑: 『g:\研究生課程檔案\資料集\血細胞影象』

files :下下層資料夾的路徑,這裡可以看到已經沒有資料夾了。所有這裡的值返回

4.路徑拼接,講幾個路徑拼接起來

os.path.join(path1,path2)
5.返回指定的資料夾包含的檔案或資料夾的名字的列表

os.listdir(path)
返回path這個目錄下的檔案、或資料夾的名字的列表

比如: 『g:\研究生課程檔案\資料集\血細胞影象\一級資料夾\1.jpg』

os.listdir(『g:\研究生課程檔案\資料集\血細胞影象\一級資料夾』)

返回:1.jpg

os.listdir(『g:\研究生課程檔案\資料集\血細胞影象』)

返回:一級資料夾

返回的是列表

6.拷貝檔案,用到shutil這個模組

shutil.copy(path1,path2)
從path1拷貝到path2

7資料集的切分

把原先的**打亂,之後再按比例分割

path =

'g:\研究生課程檔案\資料集\血細胞影象'

defset_split

(old_path)

: new_path =

'g:\deep_learming\pytorch\data\cell_set'

if os.path.exists(old_path)==1

:#資料夾存在,則新建乙個新的資料夾

os.makedirs(new_path)

#新建乙個資料夾

else

:print

('資料夾不存在!'

)return

1for path , sub_dirs , files in os.walk(old_path)

:#資料夾下三層檔案,**資料夾的路徑

for new_sub_dir in sub_dirs:

filenames = os.listdir(os.path.join(path,new_sub_dir)

)#filmenames 這時就是每個二級檔案下 ,每張**的名字

filenames =

list

(filter

(lambda x:x.endswith(

'.png'

), filenames)

)#把flimnames = x ,此時以.png結尾的檔案通過過濾器 ,filter語法,後接函式還有序列 第乙個為判斷函式,第二個為序列

# random.shuffle(filenames)

#把序列中所有元素,隨機排序 得到乙個打亂了的列表

for i in

range

(len

(filenames)):

if i < math.floor(

0.6*

len(filenames)):

#math.floor 向下取整

sub_path = os.path.join(new_path ,

'train_set'

,new_sub_dir)

#訓練集

elif i 0.8*

len(filenames)):

sub_path = os.path.join(new_path ,

'val_set'

, new_sub_dir)

#驗證集

else

: sub_path = os.path.join(new_path,

'test_set'

, new_sub_dir)

#測試集

if os.path.exists(sub_path)==0

:#不存在時

os.makedirs(sub_path)

#新建乙個資料夾

shutil.copy(os.path.join(path, new_sub_dir,filenames[i]

), os.path.join(sub_path , filenames[i]))

#拷貝 從第乙個路徑拷貝到第二個路徑下

經過這樣就可以將原本的資料集,切割成乙個訓練集、乙個驗證集、乙個測試集了。

檔案OS模組

檔案os模組 開啟檔案open file open file name路徑,訪問模式 r 以唯讀的方式開啟 rb 以二進位制的方式開啟乙個檔案用於唯讀 w 開啟乙個檔案只用於寫入 a 追加 在當前路徑下建立乙個文字檔案 file1 open 1.txt w 注意 對檔案操作完後,一定要記得關閉檔案,...

python模組 OS模組

bin env python coding utf 8 import os print os.name 輸出主機平台 print os.getcwd 輸出當前目錄 print os.listdir os.getcwd 輸出當前目錄的檔案 橫向 for i in os.listdir os.getcw...

python 模組 OS模組

print os.getcwd 輸出 e python workspace 原來 print os.getcwd 輸出 e python workspace 返回上級目錄 os.chdir os.getcwd 輸出 e python 更改 os.chdir r e print os.getcwd 輸...