python - "pwd"通过 python 子进程运行时在 Windows 机器上给出路径

标签 python subprocess windows-7-x64

我编写了以下名为 file_I_executed.py 的脚本:

import subprocess
def main():
    loc = subprocess.popen("pwd")
    print loc

输出结果:

C:\Python27\python.exe C:/Users/username/PycharmProjects/projectname/file_I_executed.py

但是,当我在 Windows cmd 上尝试“pwd”时,我得到:

C:\Users\username\somedirectory>pwd
'pwd' is not recognized as an internal or external command,
operable program or batch file.

什么给了? subprocess 究竟是如何工作的?为什么“pwd”给我 python 路径以及脚本的路径,而当我从 Windows 命令行运行它时它显然不应该给我?

我在 Windows 7 上使用来自 pycharm 的 python 2.7.1。

澄清:我完全知道“pwd”不是 Windows 命令。但是,上面显示的脚本给了我指示的结果,我不明白为什么。

最佳答案

您在 PyCharm 下运行程序时看到的输出不是来自 subprocess.popen("pwd") 调用。事实上,这个调用根本就不会被执行!

您有一个main 函数,但是您没有任何调用 main() 的代码。

输出只是 PyCharm 在启动您的程序时的默认打印输出。您将使用空程序获得相同的输出。如果您从命令行运行程序,则不会有任何输出。

如果你在文件底部添加一个 main() 调用,当它试图执行 subprocess.popen("pwd") 时你会得到一个错误, 因为没有这个功能。

如果您将其更改为正确的 subprocess.Popen("pwd"),您将收到预期的错误,即没有 pwd 命令。 (感谢 anarchos78 指出这一点。)

PyCharm 有一个集成调试器,可以帮助解决此类问题。通过单步执行代码,您可以轻松查看代码的哪些部分已执行或未执行。

关于python - "pwd"通过 python 子进程运行时在 Windows 机器上给出路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191980/

相关文章:

python - 带有谷歌身份工具包的谷歌云端点

python - 查看 Django 模板中的所有对象

python - 使用 CNN 的时尚 MNIST ,过度拟合?

python - 在 Win7 64 位、Python 2.6.4 中安装 PIL (Python Imaging Library)

python - 如何更新 Python?

python - 如何使用 python fabric 自动回答提示?

python 子进程文件不存在

python - 将 ffmpeg 与子进程 python 一起使用

python - 无法使用从 cli 运行的命令调用子进程

android - Eclipse 和 Android SDK 问题 "aapt.exe has stopped"