我使用[path / to / working_directory] [filename] [粒子数]运行我的code.py,例如:
python2 code.py /home/user/file thing.txt 100
他们都是可以理解的字符串。我无法将[粒子数]转换为int。代码看起来像:
import math, scipy, numpy ...ect
import ConfigParser
import sys
def main():
working_dir = sys.argv[1]
filename = sys.argv[2]
if filename.endswith('.txt'):
filename = filename[:-4] #removes '.txt' extension
number_parts = int((sys.argv[3]))
我在此阶段遇到以下错误:
" TypeError:' module'对象不可调用"
Floats工作,但我需要一个整数。我试过了:
number_parts = int(float(sys.argv[3]))
甚至:
temp = float(sys.argv[3])
ignore, number_parts = modf(temp)
number_parts = int(number_parts)
任何想法?谢谢!
答案 0 :(得分:0)
查看导入的标识符冲突。
您是否导入名为int的模块?
答案 1 :(得分:0)
检查是否导入了int
。同时检查(builtin int
是否覆盖)
>>>type(int)
<type 'type'>
>>>callable(int)
True
OR
from __builtin__ import int
number_parts = int((sys.argv[3]))
答案 2 :(得分:0)
您确定此行发生了错误吗?你能提供整个错误的堆栈跟踪吗?我问,因为你导入你的库的方式应该没有任何名称空间混淆(而不是导入from ... import *
)。
另外,我会删除int((sys.argv[3]))
中的额外括号(或者您以后将其用作元组?)并将其更改为int(sys.argv[3])
。
对我来说,当我使用您使用的相同命令调用它时,这是有效的:
import math, scipy, numpy
import ConfigParser
import sys
def main():
working_dir = sys.argv[1]
filename = sys.argv[2]
if filename.endswith('.txt'):
filename = filename[:-4] # removes '.txt' extension
number_parts = int(sys.argv[3])
print number_parts
if __name__ == "__main__":
main()
将打印100
。你能检查一下这个最小的例子是否适合你(缩小范围)?