Python returns 错误,但命令行没有

Python returns error, but Command Line doesn't

我正在尝试使用此命令获取所有 运行ning 进程

wmic /output:C:\ProcessList.txt process get caption

当我 运行 在 cmd 中使用它时,它可以工作并将所有内容输出到指定的文件。

当我用 Python 尝试 运行 时,我收到一条错误消息:

Invalid file name.

我尝试 运行 将其与 os.system 和 subprocess.call 结合使用,但两者都 return 出错。

os.system('wmic /output:C:\ProcessList.txt process get caption')
subprocess.call('wmic /output:C:\ProcessList.txt process get caption')

我也试过使用原始字符串。

os.system(r'wmic /output:C:\ProcessList.txt process get caption')
subprocess.call(r'wmic /output:C:\ProcessList.txt process get caption')

但到目前为止没有任何效果。

Python把一个\\读成\,所以你要做的是:

os.system('wmic /output:C:\\ProcessList.txt process get caption')

如您所见,您在命令提示符中使用了 2 个反斜杠。因此,为了使路径在 python 中工作,您将需要 4 个反斜杠。原因是反斜杠 (\) 是字符串中的特殊字符。因此,为了使用单个反斜杠字符,您必须转义反斜杠,这是通过将 2 个反斜杠背靠背放置来完成的,如下所示:\。您还可以使用原始字符串,它只是一个以“r”(r'...')为前缀的字符串,它会自动转义所有反斜杠。

因此,您可以使用以下方法之一:

  • 使用原始字符串(自动转义反斜杠):

    r'wmic /output:C:\ProcessList.txt process get caption'
    
  • 手动转义反斜杠(4 个反斜杠):

    'wmic /output:C:\\ProcessList.txt process get caption'
    

@Carcigenicate

帮我找到了答案。他回答中的代码给了我真正的错误。我的代码给了我 Invalid file name. 他的代码返回:Permission denied: C\ProcessList.txt。所以这是一个权限问题。我只是 运行 我的 IDE 具有管理员权限并且它有效。

为了避免 运行 我的 IDE 一直处于管理员模式,我只是将文件埋入 Documents 中,因此我不需要管理员权限即可访问它。