您的位置:首页 > 编程语言 > Python开发

优达学城(Udacity)深度学习笔记-1.Python&os学习

2017-01-19 17:36 603 查看

欢迎使用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)
其中st_size是该文件的大小,单位是Byte

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))
,这个的结果是把notMNIST_large下面的所有文件文件夹按照顺序排列好赋给d。

答案是

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 ……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息