Python:运行脚本时的TypeError,但不在解释器中

时间:2013-04-05 01:33:17

标签: python installation typeerror

我正在尝试通过命令行或在解释器中运行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

非常感谢任何帮助

1 个答案:

答案 0 :(得分: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类型构造函数将参数显式转换为浮点数。