2024-04-18 05:47:51 发布
网友
我找了好几天,找不到一个很好的解释来解释怎么做。我尝试在python中执行以下操作:
从系统中获取时间并将其发送到如下变量:
time = os.popen("date +%T").read()
然后像这样做:
os.system("echo time is " + time + " | festival --tts ")
当我这样做的时候,它抛出了一个关于“|”的错误。我看腻了子流程调用,但是我不知道如何使用它将echo命令传输到另一个命令。你知道吗
救命啊?你知道吗
使用subprocess模块。你知道吗
主要问题是管道字符是shell特性,^{}不使用shell,而是执行原始命令。你知道吗
例如,您可以使用:
import subprocess output = subprocess.check_output("echo time is " + time + " | festival tts ", shell=True)
在本例中,您需要使用shell=True作为关键字参数,这样它就不会抱怨管道。你知道吗
shell=True
注意:一般来说,您应该注意,来自不受信任的源的任何内容都不会作为system/shell命令执行。在您的特定情况下,这似乎不是真正的问题,因为您只是从date输出组装命令,但一般来说,这可能会导致严重的安全问题。你知道吗
date
另外请注意,没有理由执行date +%T,请改用以下命令:
date +%T
import time mytime = time.strftime("%H:%m:%S")
(请注意,在本例中,变量名为mytime,以避免隐藏时间模块)
使用subprocess模块。你知道吗
主要问题是管道字符是shell特性,^{} 不使用shell,而是执行原始命令。你知道吗
例如,您可以使用:
在本例中,您需要使用
shell=True
作为关键字参数,这样它就不会抱怨管道。你知道吗注意:一般来说,您应该注意,来自不受信任的源的任何内容都不会作为system/shell命令执行。在您的特定情况下,这似乎不是真正的问题,因为您只是从
date
输出组装命令,但一般来说,这可能会导致严重的安全问题。你知道吗另外请注意,没有理由执行
date +%T
,请改用以下命令:(请注意,在本例中,变量名为mytime,以避免隐藏时间模块)
相关问题 更多 >
编程相关推荐