Использование 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,

Другие вопросы по тегам