我有一条路径' D:\ Torres \ Gas_Entrapment \ new_calculations \ command_script_load \ Es_cteS_cte \ w_load'我存储9(九)个文件夹的地方。
每个文件夹都包含一个main.py等。
我已经编写了一个脚本并将其放在目录上:' D:\ Torres \ Gas_Entrapment \ new_calculations \ command_script_load \ Es_cteS_cte \ w_load',以便它可以访问包含的main.py在每个文件夹中。
这是我的代码:
import subprocess
import os
PYTHON_PATH = r'C:\Python34\python.exe'
CURRENT_PATH = r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load'
try_str = [r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\1\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\2\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\3\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\4\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\5\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\6\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\7\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\8\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\9\main.py']
for i in range(len(try_str)):
subprocess.check_call([PYTHON_PATH, try_str[i]])
这是我执行时遇到的异常
D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load>python subprocesses_handler.py
D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\1\main.py True
Traceback (most recent call last):
File "subprocesses_handler.py", line 33, in <module>
subprocess.check_call([PYTHON_PATH, try_str[i]])
File "C:\Users\torresl\AppData\Local\Continuum\Anaconda3 \lib\subprocess.py", line 556, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Users\torresl\AppData\Local\Continuum\Anaconda3\lib\subprocess.py", line 537, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Users\torresl\AppData\Local\Continuum\Anaconda3\lib\subprocess.py", line 859, in __init__
restore_signals, start_new_session)
File "C:\Users\torresl\AppData\Local\Continuum\Anaconda3\lib\subprocess.py", line 1112, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
&#34; Das System kann die angegebene Datei nicht finden&#34;是德语&#34;系统找不到文件&#34;
此时我真的不知道发生了什么......首先我用模块os制作了一个列表来获取目录中的所有文件夹......然后我就制作了这个列表try_str并复制并粘贴每个文件夹的路径,以确保没有&#39; \&#39;的不兼容性。和&#39; \&#39; ...
请帮我一把!
THX。
答案 0 :(得分:2)
当您收到类似
的错误时FileNotFoundError: [WinError 2] The system cannot find the file specified
或者它的德语版本,这意味着您指定了错误的可执行文件。我的猜测是Python可执行文件不在您指定的位置 - C:\Python34\python.exe
。
无论如何,你真的不需要手动将路径的值放到Python.exe
,而是可以使用sys.executable
来获取运行当前程序的Python可执行文件的路径。 / p>
您可以在程序中使用它。示例 -
import subprocess
import os
import sys
CURRENT_PATH = r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load'
try_str = [r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\1\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\2\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\3\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\4\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\5\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\6\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\7\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\8\main.py',\
r'D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load\9\main.py']
for i in range(len(try_str)):
subprocess.check_call([sys.executable, try_str[i]])
虽然在大多数情况下,你甚至不需要这个,你可以简单地使用'python'
,并让os根据PATH
env变量决定使用哪个python。