0

我正在尝试通过命令行或在解释器中使用以下命令运行 Python 文件:

import sys
import subprocess
subprocess.call([sys.executable, "file.py", "arg1", "arg2", "arg3"])

但是程序返回一个 TypeError:“无法连接 'str' 和 'numpy.float64' 对象”。

我无法理解的是,当我在解释器中逐行运行程序时,没有这样的错误,一切都很好。

我不知道从哪里开始调试它,但我怀疑它可能与我的设置有关。

我在 Windows 7 中安装了 64 位版本的 Python 和 32 位版本的 Python。两个版本的 Python 都是 2.7。(这是由于使用了一些仅在 32 位中可用的模块 - 因此上面的程序正在 32 位版本中运行)。环境路径变量已被编辑为仅使用 32 位版本。

我不确定还有哪些其他信息是相关的,但请告诉我,我会挖掘它。

基本上我只想能够从命令运行程序:

python program.py arg1 arg2 arg3

任何帮助是极大的赞赏

4

1 回答 1

3

您很可能将参数传递给您的函数,而不将它们从它们的字符串表示形式转换 - 当您在解释器中测试代码并为其提供数字时,一切当然都会按预期工作。 如果你正在做这样的事情:

# Wild guess at what your code actually looks like

if __name__ == "__main__":
    # main_function(23.1, 44.9, 12.21)  # This works when uncommented ... why?
    main_function(sys.argv[1], sys.argv[2], sys.argv[3])  # This breaks ... why?

然后知道当你打电话时:

python program.py 23.1 44.9 12.21

你真的main_function用以下方式打电话:

main_function("23.1", "44.9", "12.21")

您需要使用float类型构造函数将参数显式转换为浮点数。

于 2013-04-05T01:39:12.953 回答