代码:-
import subprocess
print(subprocess.run(['date']))
字符串
运行时:-
Traceback (most recent call last):
File "D:\PyProjects\selenium\0experiment.py", line 8, in <module>
print(subprocess.run(['date']))
File "D:\Users\anaconda3\lib\subprocess.py", line 488, in run
with Popen(*popenargs, **kwargs) as process:
File "D:\Users\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 104, in __init__
super(SubprocessPopen, self).__init__(*args, **kwargs)
File "D:\Users\anaconda3\lib\subprocess.py", line 800, in __init__
restore_signals, start_new_session)
File "D:\Users\anaconda3\lib\subprocess.py", line 1207, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
型
我是完全新的这些和学习这些东西从网上视频.其中导师的相同的代码运行完美。Here is the video (at 1:40)
我也试过这个代码:
import subprocess
print(subprocess.run(['date'], shell=True))
型
但是当运行时,上面的代码导致控制台运行了很长一段时间,我不得不手动终止它(没有在控制台上打印任何东西)。(为什么??)
我在谷歌上搜索了很多,读了一些类似的问题,有这样的错误......但无法帮助自己:for example this thread.的
- 这是什么[WinError 2],是什么导致了这个错误?
- FileNotFoundError,这个程序引用的是什么文件?
- 在执行使用子进程模块的程序之前,是否需要满足任何与操作系统/系统相关的先决条件?
- 我使用的是windows 10,Spyder IDE(没有安装在C驱动器中,而是安装在D驱动器中)有最新版本的Python。
请用通俗的语言解释一下。- 谢谢-谢谢
2条答案
按热度按时间xt0899hw1#
尝试在CMD终端上运行date,它会提示您输入一个新的日期,这就是导致您的子进程无限期挂起的原因。对于这个命令使用shell=True是正确的。shell的使用扩展了你的环境变量和可用的文件列表(这就是win32错误的意思)。因为date是一个特定的windows命令,所以你需要shell。使用shell=True也是依赖于平台的,因此您可能需要检查您正在尝试执行的命令。
aydmsdu92#
我已经使用了这个在SPyder以及它运行正确,我唯一关心的(因为我也是新的这一点)是为什么控制台要求您输入一个新的日期。但不管怎样都管用
字符串
输出(西班牙文):
型
第一行告诉你日期,第二行要求你输入新的日期,如上所述。