我想检查提供给R脚本的输出目录是否可写。但要检查一下,我还需要检查当前有效用户所属的组,我似乎无法找到如何做到这一点。该查询也没有谷歌。
这是我到目前为止所拥有的
is.writable <- function(dir)
{
if(file.info(outputDir)['size'] == NA || file.info(outputDir)['isdir'] == FALSE)
return FALSE
mode <- file.info['mode']
owner <- file.info['uname']
fileGroup <- file.info['grname']
user <- Sys.info()[["effective_user"]]
if(bitwAnd(mode,2) != 0) # every can access
return TRUE
#if(bitwAnd(mode,16) != 0) # 16=0020 in octal, some group has access
if(bitwAnd(mode,128) != 0) # 128 = 0200 in octal, the owner has write access
return user == owner
}
我使用this来实现它。一旦我弄清楚如何获得有效用户所属的组的向量,我就可以自己完成。
谢谢,
答案 0 :(得分:1)
您可以随时弹出并使用groups
命令:
> groups = strsplit(system("groups",intern=TRUE)," ")[[1]]
> groups
[1] "rowlings" "adm" "sudo" "lpadmin" "sambashare"
或者,围绕Unix API相关部分的Rcpp包装器将完成这项工作。
(显然这在Windows上大多不起作用)
答案 1 :(得分:0)
我似乎找到了一个检查目录(或文件)是否可写的解决方案。但是,我还不知道如何获取用户组,因此虽然我将此作为答案发布,但我不接受它,因为它没有解决主标题中的问题。
要检查导演outputDir是否可写,只需检查此条件是否为真:
file.access(outputDir,2) == 0