如何告诉Python等待来自os.system()的Windows命令完成?

2024-09-28 22:19:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在cmd中执行一个命令,以便在-nodesktop模式下运行Matlab(因此没有gui)。我将运行的Matlab程序将创建一个.txt文件,稍后在同一脚本中pandas将对其进行解析。但是在我的Windows 10上(在Linux上可以工作),pandas不等待命令完成,而是尝试解析一个空文件,这会导致以下错误:

pandas.errors.EmptyDataError: No columns to parse from file

这是我运行的命令(稍后在Matlab中有几个(正确的)函数调用):

matlab -nodesktop -r

然后整个命令串按如下方式运行:

os.system(COMMAND_START)

几行之后,我尝试用pandas解析文件,但它不会等待os.system()完成,所以在Matlab命令启动之后(需要很长时间才能完成),Panda想要解析一个空文件。 如何使脚本等待os.system()完成

df = pd.read_csv("stabs.txt", header=None)
STABS_KG = df[0].to_list()
STABS_1_KG = df[1].to_list()

Tags: 文件to命令txt脚本cmdpandasdf
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:29

如果您不想使子流程模块复杂化,并且您对完成所需的时间有一个估计,您可以在调用后简单地添加一个睡眠(秒):

os.system(COMMAND_START)
sleep(2) -> wait 2 seconds

您还可以使用子流程模块:

import subprocess
process = subprocess.Popen(['COMMAND_START'])
exitCode=process.wait()

相关问题 更多 >