我正在尝试通过命令行或在解释器中运行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
非常感谢任何帮助
答案 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
类型构造函数将参数显式转换为浮点数。