gpt4 book ai didi

julia - 如何检查是否可以写入文件夹

转载 作者:行者123 更新时间:2023-12-01 10:26:44 24 4
gpt4 key购买 nike

在 julia 中,如何检查当前是否允许写入文件夹?

我可以用 python 的方式来做,只是尝试去做,然后失败并恢复。(在我的情况下,我肯定可以恢复,我有一个尝试写入的位置列表,作为后备。我希望前几个不起作用(前几个是共享位置,因此只有计算机管理员可能有权那里的作家)

最佳答案

Python 也有 os.access功能。也许 Julia 将来会有类似的东西。现在我们可以借用想法了。 :)

posixmodule.c中实现(也是 Windows 的功能!)所以如果你在 posix 上,你可以简单地模仿:

julia> const R_OK = 4  # readability
julia> const W_OK = 2 # writability
julia> const X_OK = 1 # executability
julia> const F_OK = 4 # existence

julia> access(path, mode) = ccall(:access, Cint, (Cstring, Cint), path, mode) == 0;

小测试:

julia> access("/root", W_OK)
false

julia> access("/tmp", W_OK)
true

(对于 Windows,它可能会更复杂一些......但我现在无法测试它)

编辑:

感谢 Matt B。我们可以在 Julia 中使用 libuv 支持,它必须是可移植的(尽管在 posix 系统上速度较慢):

julia> function uv_access(path, mode)
local ret
req = Libc.malloc(Base._sizeof_uv_fs)
try
ret = ccall(:uv_fs_access, Int32, (Ptr{Void}, Ptr{Void}, Cstring, Int64, Ptr{Void}), Base.eventloop(), req, path, mode, C_NULL)
ccall(:uv_fs_req_cleanup, Void, (Ptr{Void},), req)
finally
Libc.free(req)
end
return ret, ret==0 ? "OK" : Base.struverror(ret)
end

julia> uv_access("/tmp", W_OK)
(0, "OK")

julia> uv_access("/root", W_OK)
(-13, "permission denied")

julia> uv_access("/nonexist", W_OK)
(-2, "no such file or directory")

关于julia - 如何检查是否可以写入文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47118479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com