小编ric*_*hid的帖子

使用字典和字符串的Python字符串插值

鉴于:

dict = {"path": "/var/blah"}
curr = "1.1"
prev = "1.0"
Run Code Online (Sandbox Code Playgroud)

插入字符串以生成以下内容的最佳/最短方法是什么:

路径:/ var/blah curr:1.1上一篇:1.0

我知道这有效:

str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % {"path": dict["path"],"curr": curr, "prev": prev}
Run Code Online (Sandbox Code Playgroud)

但我希望有一个更短的方式,例如:

str = "path: %(path)s curr: %s prev: %s" % (dict, curr, prev)
Run Code Online (Sandbox Code Playgroud)

如果这看起来像是一个过于迂腐的问题,我道歉.

python string string-interpolation

20
推荐指数
6
解决办法
4万
查看次数

Terraform 可以为 null 的变量的自定义验证

我正在尝试使用 Terraform 0.13 的自定义变量验证来确保该值位于null指定范围内或之间。我已经尝试了我能想到的每种组合(使用cantry等),但无法让它适用于每种情况。

这是完整的非工作示例:

variable "target_group_stickiness_duration" {
  default = null
  type    = number
 
  validation {
    condition = ( 
      var.target_group_stickiness_duration == null ||
      ( var.target_group_stickiness_duration >= 1 && var.target_group_stickiness_duration <= 604800 )
    )   
 
    error_message = "Target group stickiness duration must be >= 1 and <= 604800."
  }
}
Run Code Online (Sandbox Code Playgroud)

如果该值出现null以下错误,则此操作将失败:

操作期间出错:参数不能为空。

我相信这是由于对条件表达式的急切求值造成的。我错过了一些明显的东西吗?或者有什么聪明的解决方法吗?

terraform

6
推荐指数
2
解决办法
1万
查看次数

Scala:捕获交互式外部进程的标准输出/标准错误

我正在尝试从需要用户输入的外部进程中捕获 stdout 和 stderr 流。到目前为止,我已将精力集中在使用scala.sys.process包中可用的工具上。我可以让用户交互流捕获正常工作,但不能同时进行。我添加了一个简单的测试用例,其中包含两种行为的示例。我怀疑我没有正确连接输入/输出流,但我有点迷茫。

import scala.sys.process._

object Test extends App {
  val processLogger = ProcessLogger(
    (out: String) => println(s"OUT: $out"),
    (err: String) => println(s"ERR: $err")
  )

  val cmd = "sbt new scala/scala-seed.g8"

  // Allows user interaction but doesn't allow capture of stdout/stderr
  val exitCode1 = cmd.run(connectInput = true).exitValue() 

  // Allows stdout/stderr capture but user input prompt is not displayed
  val exitCode2 = cmd.run(processLogger, connectInput = true).exitValue() 
}
Run Code Online (Sandbox Code Playgroud)

scala stdout process

5
推荐指数
0
解决办法
443
查看次数