hhzczy 发表于 2018-11-3 18:11:53

我又来领奖了~~~~

本帖最后由 hhzczy 于 2018-11-3 20:08 编辑

@小甲鱼

《零基础入门学习Python》P89页,关于os.path的表格中有一处表述不严谨。
“……如果完全使用目录,它也会将最后一个目录作为文件名分离……”
我在做笔记的时候尝试了以下几种情况:
>>> import os
>>> os.path.split('C:\\Program Files (x86)\\Anki\\Anki.exe')    # 文件
('C:\\Program Files (x86)\\Anki', 'Anki.exe')
>>>
>>> os.path.split('C:\\Program Files (x86)\\Anki\\')    # 文件夹。尾有斜杠
('C:\\Program Files (x86)\\Anki', '')
>>>
>>> os.path.split('C:\\Program Files (x86)\\Anki')    # 文件夹。尾无斜杠
('C:\\Program Files (x86)', 'Anki')
在我看来,其实如果结尾不加反斜杠表示的是一个没有后缀名的文件(我是这样理解的,而且这样想的话,遇到的问题都能解释得通)。
还是按照文件名(也许没有后缀名)和路径分割的,这个原则并未出现特殊。所以“……如果完全使用目录,它也会将最后一个目录作为文件名分离……”这句话应该删掉。
再比如:
>>> import os
>>> os.path.dirname('H:\\I\\J\\K\\sample.txt')
'H:\\I\\J\\K'
>>> os.path.dirname('H:\\I\\J\\K\\Sample_folder')
'H:\\I\\J\\K'
>>> os.path.dirname('H:\\I\\J\\K\\Sample_folder\\')
'H:\\I\\J\\K\\Sample_folder'
>>> import os
>>> os.path.splitext('C:\\Program Files (x86)\\Anki\\Anki.exe')
('C:\\Program Files (x86)\\Anki\\Anki', '.exe')
>>> os.path.splitext('C:\\Program Files (x86)\\Anki\\)                     
SyntaxError: EOL while scanning string literal
>>> os.path.splitext('C:\\Program Files (x86)\\Anki')                     
('C:\\Program Files (x86)\\Anki', '')

hhzczy 发表于 2018-11-3 19:46:10

本帖最后由 hhzczy 于 2018-11-3 20:00 编辑

以上只是我自己的理解,随着学习后边几个函数,我发现我的理解也有问题:
>>> import os
>>> os.path.isfile('C:\\Program Files (x86)\\Anki\\Anki.exe')
True
>>> os.path.isfile('C:\\Program Files (x86)\\Anki')
False
>>> os.path.isfile('C:\\Program Files (x86)\\Anki\\')
False

>>> import os
>>> os.path.isdir('C:\\Program Files (x86)\\Anki\\Anki.exe')
False
>>> os.path.isdir('C:\\Program Files (x86)\\Anki\\')
True
>>> os.path.isdir('C:\\Program Files (x86)\\Anki')
True

如果我在文件夹里建立了文件,并把后缀名删掉,难道就不是文件了吗?能变成路径吗?
文件还是那个文件…路径还是那个路径…
页: [1]
查看完整版本: 我又来领奖了~~~~