“pwd”在运行python子进程时在Windows机器上给出路径
作者:互联网
我编写了以下脚本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.
是什么赋予了?子进程是如何工作的?为什么“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,subprocess,windows-7-x64 来源: https://codeday.me/bug/20190528/1169940.html