【问题标题】:Getting user input for os.system获取 os.system 的用户输入
【发布时间】:2020-02-27 16:27:24
【问题描述】:

最近才开始学习 Python,所以请原谅这个菜鸟问题(一开始可能完全错了)

我正在尝试让用户输入与os.system一起使用

import os
account = input("Account name: ")
os.system("op get item + account + | awk -F':' '{print $24}' | cut -d '}' -f 1")

这行代码用于获取和显示来自 1Password 的信息并仅输出 Facebook 的密码就是这个例子,它可以工作,但是一旦我尝试添加变量,它就会中断

op get item Facebook | awk -F':' '{print $24}' | cut -d '}' -f 1

我希望这里有人可以帮助我或指出正确的方向,谢谢!

【问题讨论】:

  • os.system("op get item "+account+" | awk -F':' '{print $24}' | cut -d '}' -f 1")
  • 你能分享你试过的整条线路吗,包括os.system()
  • 非常感谢,这似乎工作得很好!

标签: python os.system


【解决方案1】:

我认为您需要处理这些命令的输出,因此您可以改用 subprocess 模块:Replacing Shell Pipeline

例如:

from subprocess import check_output

check_output(f"op get item {account} | awk -F':' '{{print $24}}' | cut -d '}}' -f 1", shell=True)

请注意,在接触系统调用之前,您需要清理帐户变量。 :)

【讨论】:

  • 感谢您的链接,我会加入的!目前,只需将 + account + 更改为 "+account+" 似乎就可以解决问题
【解决方案2】:

您只需要字符串替换,例如用Python3.6+优雅

os.system(f"op get item {account} | awk -F':'" + " '{print $24}' | cut -d '}' -f 1")

【讨论】:

  • 为什么需要+?此外,SyntaxError: invalid syntax 将由于{print $24} 而发生
  • 这正是我使用+的原因,呵呵
  • 哦,我说得好,我认为 account 之前的“+”是命令的一部分。走得太快了。现已修复。
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 2016-10-01
  • 2014-06-05
  • 1970-01-01
相关资源
最近更新 更多