由stat函数混淆

dop*_*man 1 julia

我正在尝试检测给定路径是文件还是目录:

map(stat, readdir("./"))

#=
 StatStruct(mode=040775, size=4096)
 StatStruct(mode=040775, size=4096)
=#
Run Code Online (Sandbox Code Playgroud)

这是正确的,我有两个目录cwd.但是,当我尝试stat目录时:

map(stat, readdir("./mydir"))
Run Code Online (Sandbox Code Playgroud)

我明白了

#=
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
=#
Run Code Online (Sandbox Code Playgroud)

这对我毫无意义.我有文件和文件夹mydir.怎么了?

Mat*_* B. 5

看看输出readdir("./mydir")是什么- 它只是该文件夹中的文件名,没有mydir/前置.您使用stat来自不同目录的文件名从当前工作目录调用.

为了使其工作,您需要移动到mydir或手动添加mydir/到您的文件名:

cd("./mydir") do
    map(stat, readdir())
end
Run Code Online (Sandbox Code Playgroud)

要么

map(f -> stat(joinpath("mydir", f)), readdir("./mydir"))
Run Code Online (Sandbox Code Playgroud)