代码:-
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
我对这些完全陌生,并且正在从在线视频中学习这些东西......其中导师的相同代码运行完美。 这是视频(1:40)
我也尝试过这段代码:
import subprocess
print(subprocess.run(['date'], shell=True))
但是当运行时,上面的代码导致控制台运行很长一段时间,我必须手动终止它(不在控制台上打印任何内容)。 (为什么?)
我在谷歌上搜索了很多,并阅读了一些类似类型的问题,有这样的错误......但无法帮助自己:例如这个线程。
这是什么[WinError 2],是什么导致了这个错误?
FileNotFoundError ,这个程序引用的是什么文件?
在执行使用子进程模块的程序之前,是否需要满足任何与操作系统/系统相关的先决条件?
我使用的是Windows 10,Spyder IDE(未安装在C盘而是D盘)具有最新版本的python。
请用通俗的语言解释一下。谢谢。
尝试在 CMD 终端上运行 date ,它会提示您输入新日期,这就是导致子进程无限期挂起的原因。 您对于此命令使用 shell=True 是正确的。使用 shell 会扩展您的环境变量和可用的文件全局列表(这就是 win32 错误的含义)。由于此处的 date 是一个特定的 Windows 命令,因此您需要 shell。 使用 shell=True 也依赖于平台,因此您可能需要检查您正在尝试执行哪些命令。
我也在 SPyder 中使用过它并且它运行正常,我唯一关心的(因为我也是新手)是为什么控制台要求您输入新日期。但无论如何它都有效...
import subprocess
subprocess.run(["date"], shell=True)
输出(西班牙语):
La fecha actual es: jue. 27/07/2023
Escriba la nueva fecha: (dd-mm-aa)
第一行告诉您日期,第二行要求您输入新日期,如上所述。