无法将 sys.argv 字符串转换为 int
can't convert a sys.argv strings to int
我运行我的code.py与[path/to/working_directory][文件名][粒子数]例如:
python2 code.py /home/user/file thing.txt 100
它们都是以字符串形式出现的,这是可以理解的。我无法将 [粒子数] 转换为整数。代码类似于:
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' object is not callable"
浮点数有效,但我需要一个整数。我试过:
number_parts = int(float(sys.argv[3]))
甚至:
temp = float(sys.argv[3])
ignore, number_parts = modf(temp)
number_parts = int(number_parts)
有什么想法吗?谢谢!
查看您的导入是否存在标识符冲突。
您要导入名为 int 的模块吗?
检查是否有任何 int
是 imported.Check 这也(builtin int
是否覆盖)
>>>type(int)
<type 'type'>
>>>callable(int)
True
或
from __builtin__ import int
number_parts = int((sys.argv[3]))
你确定错误发生在这一行吗?你能提供错误的整个堆栈跟踪吗?我问是因为您导入库的方式不应该有任何命名空间混淆(与使用 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
。你能检查这个最小的例子是否适合你(缩小范围)吗?
我运行我的code.py与[path/to/working_directory][文件名][粒子数]例如:
python2 code.py /home/user/file thing.txt 100
它们都是以字符串形式出现的,这是可以理解的。我无法将 [粒子数] 转换为整数。代码类似于:
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' object is not callable"
浮点数有效,但我需要一个整数。我试过:
number_parts = int(float(sys.argv[3]))
甚至:
temp = float(sys.argv[3])
ignore, number_parts = modf(temp)
number_parts = int(number_parts)
有什么想法吗?谢谢!
查看您的导入是否存在标识符冲突。
您要导入名为 int 的模块吗?
检查是否有任何 int
是 imported.Check 这也(builtin int
是否覆盖)
>>>type(int)
<type 'type'>
>>>callable(int)
True
或
from __builtin__ import int
number_parts = int((sys.argv[3]))
你确定错误发生在这一行吗?你能提供错误的整个堆栈跟踪吗?我问是因为您导入库的方式不应该有任何命名空间混淆(与使用 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
。你能检查这个最小的例子是否适合你(缩小范围)吗?