【发布时间】:2014-02-19 07:43:33
【问题描述】:
经过长时间运行后,我想使用Python subprocess.Popen 在Windows 7 上调用碎片整理工具defrag,如示例所示。
from subprocess import Popen
process1 = Popen('defrag', shell = True)
process1.wait()
print('finished defragmentation!')
这给出以下输出:
Der Befehl "defrag" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
finished defragmentation!
对于德国的输出感到抱歉。不知道怎么转英文。但是,这意味着找不到命令defrag。我尝试使用shell=False 并使用序列作为输入参数。没有任何效果,但我记得我在Windows XP 上做了同样的事情。也可以使用Popen 调用dir。为什么defrag 不适用于Windows 7?我怎样才能让它运行?
【问题讨论】:
-
就像一个非常愚蠢的检查一样,如果你打开
cmd并写defrag,你得到的帮助文本是否正确? -
是的,当然。从命令行运行碎片整理工作。
-
是的,再次抱歉这个愚蠢的问题。你能试试吗:
Popen('Defrag.exe', shell = True, cwd='C:\\Windows\\System32\\')? -
没有愚蠢的问题。但指定 cwd 也无济于事。错误信息是一样的。
-
我现在正在胡思乱想,因为这应该可以工作。它都是正确的大写格式,路径是精确的。尝试以管理员身份运行?
标签: python windows-7 subprocess