Использование readline и getPass в блокноте Jupyter с ядром R
У меня есть следующие функции для запроса и записи учетных данных:
varrep.set.netrc.credentials <- function() {
# check if the .netrc file exists
if(file.exists(netrc.file)){
what.to.do <- readline(prompt="A netrc file already exists.\nDo you want to view it (V), Edit the credentials (E) or Cancel this operation (C)?")
what.to.do <- toupper(what.to.do)
if(what.to.do == "C"){
return("Operation canceled.")
}
else if(what.to.do == "V"){
netrc.content <- read.netrc.file()
return(netrc.content)
}
else if(what.to.do == "E"){
write.netrc.file()
}
else{
stop("I do not understand the answer: ", what.to.do)
}
}
else{
write.netrc.file()
}
}
а также
# write netrc file
write.netrc.file <- function(){
login <- getPass(msg = "Enter cwid")
login <- tolower(login)
password <- getPass(msg = "Enter password")
netrc.line <- paste0("machine ", machine.name, " login ", login, " password ", password)
write(netrc.line, file = netrc.file)
}
Они отлично работают, когда я использую функции в Rstudio или в командной строке. Теперь я хочу задокументировать использование этих функций в блокноте Jupyter с ядром R.
Сначала, кажется, работает, я получаю поле ввода, где я могу набрать свой выбор:
Но если я ввожу выбор, я получаю ошибку:
Как мне сделать это в записной книжке Jupyter (и чтобы она также продолжала работать при запуске из командной строки или в Rstudio)? Глядя на этот запрос, это должно быть поддержано...
1 ответ
Моя ошибка заключалась в том, что я использовал неправильный аргумент для getPass
, так должно быть prompt
вместо cmd
,