我编写了以下名为 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/