Windows文件重定向无法在python脚本

时间:2018-04-10 14:52:34

标签: python windows

以下python代码行打开一个新的windows cmd提示符并执行ipconfig命令,但无法将输出重定向到我提供的文件。

os.system("start cmd /k ipconfig > {file_name}")

如果我直接在cmd提示符中执行相同的命令,则重定向没有问题。知道为什么会失败吗?

1 个答案:

答案 0 :(得分:1)

如果我在命令提示符下键入此命令

start cmd /k ipconfig > {file_name}

没有重定向ipconfig的输出。它打开一个新的控制台,在该控制台中运行ipconfig,将输出发送到屏幕。 start不会生成自己的输出,因此>会将不存在的输出从start重定向到{filename},并创建一个零字节输出文件。

要使用start进行重定向,您需要将>ipconfig关联起来,如下所示:

start cmd /k "ipconfig > {file_name}"

但如果您计划从Python程序调用shell,那么打开控制台窗口并将其保留在那里通常并不方便。如果我在命令提示符下键入这个更简单的命令

ipconfig > {file_name}

它按照你的描述工作。同样,

os.system(r"ipconfig > C:\users\.blah.\{file_name}")

将在Python中工作,但您需要指定输出文件的路径,否则os.system()可能会尝试将文件发送到您不允许写入的默认位置(因为它是Program Files)的子文件夹。使用r - 字符串,这样您就不会有加倍反斜杠的麻烦。

并考虑优先使用subprocess模块os.system