優達學城(Udacity)深度學習筆記-1.Python&os學習
歡迎使用Markdown編輯器寫部落格
Python
對於檔案操作非常方便,很大一部分是因為os
這個庫,在做優達城深度學習作業的時候裡面有一堆os
,各種列表推導式混合os.path
,一下就繞暈了。這裡做點筆記,方便自己學習&複習。
如上圖,我當前目錄是/home/mao/tensorflow-master/tensorflow/examples/udacity
在我當前目錄下有
1.os.path.exists('notMNIST_large')
返回True
2.os.stat('notMNIST_large.tar.gz')
返回的答案是posix.stat_result(st_mode=33270, st_ino=1448325, st_dev=2049, st_nlink=1, st_uid=1000, st_gid=1000, st_size=247336696, st_atime=1484708728, st_mtime=1484663203, st_ctime=1484708728)
3.os.path.splitext('notMNIST_large.tar.gz')
返回的是('notMNIST_large.tar', '.gz')
4.os.path.join('notMNIST_large', 'A')
返回的是 ‘notMNIST_large/A’
5.os.listdir('notMNIST_large')
返回的是該路徑下所有檔名字
['I',
'E.pickle',
'B',
'A.pickle',
'G',
'D.pickle',
'J',
'F',
'E',
'G.pickle',
'J.pickle',
'C',
'D',
'H.pickle',
'B.pickle',
'I.pickle',
'A',
'C.pickle',
'H',
'F.pickle']
6.來個列表推導式和os混合起來的爽一爽
root = os.path.splitext(os.path.splitext('notMNIST_large')[0])[0]
[os.path.join(root, d) for d in sorted(os.listdir(root)) if os.path.isdir(os.path.join(root, d))]
分析一下:首先是 這個root的答案是notMNIST_large
,因為內層的splitext[0]的結果是notMNIST_large.tar,然後外層的splitext[0]的結果是notMNIST
接著我們看列表推導式這裡:
先看for d in sorted(os.listdir(root))
答案是
A
A.pickle
B
B.pickle
C
C.pickle
D
D.pickle
E
E.pickle
F
F.pickle
G
G.pickle
H
H.pickle
I
I.pickle
J
J.pickle
然後看我們的if約束條件 ,說的是if os.path.isdir(os.path.join(root,d))
,最內層os.path.join(root,d)
的結果是 notMNIST/A notMNIST/A.pickle …… 然後os.path.isdir()來判斷這些是不是dir,是的話對應位置就是true,否則就是false。
所以這個列表推導式for 後面的結果就是A B ……J,最終這個列表推導式的結果就是notMNIST/A , notMNIST/B ……