我不能使用子进程在临时文件夹中运行文件吗?

时间:2016-09-22 09:06:31

标签: python subprocess

我试图在下面使用此代码...

**subprocess.Popen('%USERPROFILE%\\AppData\\Local\\Temp\\AdobeARM - Copy.log').communicate()**

但是我收到了一条错误消息。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

由于路径中有环境变量,您可以添加shell=True以强制运行将评估env的批处理。瓦尔:

subprocess.Popen('"%USERPROFILE%\\AppData\\Local\\Temp\\AdobeARM - Copy.log"',shell=True).communicate()

请注意带引号的保护,因为有空格。如果将包含一个元素的列表传递给Popen,您也可以删除引号,这更清晰:

subprocess.Popen(['%USERPROFILE%\\AppData\\Local\\Temp\\AdobeARM - Copy.log'],shell=True).communicate()

或者,如果您只是想激活日志文件的默认编辑器,那么有一种更简单的方法(它不会阻止执行脚本,因此它略有不同):

p = os.path.join(os.getenv('USERPROFILE'),r"AppData\Local\Temp\AdobeARM - Copy.log")
os.startfile(p)

也许它可以更简单,因为它可能是您尝试访问的临时目录:

p = os.path.join(os.getenv('TEMP'),r"AdobeARM - Copy.log")
os.startfile(p)