簡體   English   中英

無法將sys.argv字符串轉換為int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM