' Display the names in C:\ that represent directories.
MyPath = "c:\" ' Set the path.
MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry.
Do While MyName <> "" ' Start the loop.
' Use bitwise comparison to make sure MyName is a directory.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
' Display entry only if it's a directory.
MsgBox(MyName)
End If
MyName = Dir() ' Get next entry.
Loop
我正在查看上面的代码。我特别不明白“MyName = Dir()”是做什么的。它被注解为获取下一个条目,但我不明白它是如何获取下一个条目的--特别是Dir()在做什么?
3条答案
按热度按时间91zkwejq1#
引用docs
Dir返回与pathname匹配的第一个文件名。若要获取与pathname匹配的任何其他文件名,请再次调用Dir而不使用参数。当没有更多文件名匹配时,Dir将返回零长度字符串(“”)。返回零长度字符串后,必须在后续调用中指定pathname,否则将出错。
所以
Dir
是一个有边缘效应的函数。对
Dir
的第一次调用:MyName = Dir(MyPath, vbDirectory)
初始化Dir
内部结构并返回第一个目录条目。对
Dir
的后续调用使用相同的上下文,逐个生成MyPath
目录内容。它不是可重入的(这也是为什么你不能使用Dir嵌套/递归多个循环),不是很优雅,但这就是它的工作原理。
mzillmmw2#
根据
Dir()
MSDN,它返回一个字符串,该字符串表示与指定模式或文件属性匹配的文件、目录或文件夹的名称,或者表示驱动器的卷标。
az31mfrm3#
在python中,Dir()函数返回一个模块中存在的所有包/模块的列表,就像这样!!enter image description here