在Python中使用subprocess,在Python cmd和Python IDLE中得到不同的结果

在Python中使用subprocess,在Python cmd和Python IDLE中得到不同的结果,python,command-line,subprocess,Python,Command Line,Subprocess,我希望这个标题有意义。具体说明: 我使用csvtotable()从CSV生成HTML表。我已通过pip安装并能够运行命令行命令: csvtotable test1743.csv test1743.html 生成一个HTML页面。到目前为止一切都很好 我想在我已经编写的Python脚本中实现这一点,所以我听说subprocess是实现这一点的方法。我查阅了如何执行此操作,并了解可以使用以下方法执行此操作: subprocess.run('csvtotable test1743.csv test1

我希望这个标题有意义。具体说明:

我使用csvtotable()从CSV生成HTML表。我已通过pip安装并能够运行命令行命令:

csvtotable test1743.csv test1743.html
生成一个HTML页面。到目前为止一切都很好

我想在我已经编写的Python脚本中实现这一点,所以我听说subprocess是实现这一点的方法。我查阅了如何执行此操作,并了解可以使用以下方法执行此操作:

subprocess.run('csvtotable test1743.csv test1743.html',shell=True)
所以我首先通过命令行通过

python
从命令行,然后运行

import subprocess
subprocess.run('csvtotable test1743.csv test1743.html',shell=True)
成功!成功了。太棒了

但是,当我尝试从空闲状态执行此操作时,它只返回1。我检查了目录,认为可能csv从那里丢失了,但它仍然不起作用


我是否误解了子流程的工作原理?

通过找到一种不用子流程调用函数的方法来解决。我认为这个问题可能与通过python执行时未设置默认参数有关,因此我必须在下面指定这么多参数

代码:


请注意,必须更改参数名称中包含
-
的位置。我刚刚在convert.py中将任何实例(例如
display length
更改为
display_length
)更改为
subprocess.run([“csvtotable”、“test1743.csv”、“test1743.html”]、shell=True)
?@GuiGWR我刚刚尝试了它,但不幸的是它返回了
CompletedProcess(args=[“csvtotable”、“test1743.csv”、“test1743.html”],returncode=1)
。我将在子流程中处理输入和输出参数,并进行报告。也许您应该使用来查看子流程的输出。这里有一个链接,指向一个解释:以及一种操作stdouthanks的方法。我将查看一下。
from csvtotable import convert

content = convert.convert("C:\\Users\\admin\\Google Drive\\test1743.csv",delimiter=",",quotechar='"',display_length=-1,overwrite=False,serve=False,pagination=True,virtual_scroll=1000, no_header=False, export=True, export_options=["copy","csv","json","print"])
convert.save("C:\\Users\\admin\\Google Drive\\test1743.html",content)