[英]can't convert a sys.argv strings to int
例如,我使用[path / to / working_directory] [filename] [particles]運行我的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:'模塊'對象不可調用”
浮點數有效,但我需要一個整數。 我試過了:
number_parts = int(float(sys.argv[3]))
甚至:
temp = float(sys.argv[3])
ignore, number_parts = modf(temp)
number_parts = int(number_parts)
有任何想法嗎? 謝謝!
在您的導入中查看標識符沖突。
您要導入一個名為int的模塊嗎?
檢查是否導入了任何int
也要進行檢查( 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
。 您可以檢查這個最小的示例是否對您有用(以縮小范圍)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.