如何使用Python从文本文件中获取整数?

时间:2011-11-28 03:05:44

标签: python

Python中的

我试图从存储在txt中的信息中设置一个变量。我可以设法设置它,但它不是一个数字。它被存储为其他东西吗? 这是我的.txt文件(所有信息都写在一行,没有\ ns):

11 14 15 3

这是我的剧本:

def break_words(text):
    words = text.split(' ')
    return words

file_name = open("set_initial.txt")
words = break_words(file_name.read())

shift_l1 = words[0]
shift_l2 = words[1]
shift_l3 = words[2]
shift_l4 = words[3]
shift_l5 = words[4]
shift_l6 = words[5]

# this part is to verify that the variables are being set:
print shift_l1, shift_l2, shift_l3, shift_l4

while shift_l4 < 28:
# and the script goes on into a loop from here

我正在使用此方法,因为txt中值的长度将更改(例如:114 34 2 4318)。当我运行脚本时,print函数工作正常并返回我的变量作为我的.txt中的数字(分别为11 14 15 3),因此shift_l4打印为3,所以我的WHILE循环应该正常运行。但事实并非如此。正如我所说,我认为我的变量没有被设置为.txt中数字的数值,但可能只是文本值?我不知道怎么解决它。任何帮助或想法?

谢谢

2 个答案:

答案 0 :(得分:2)

我认为问题在于你的比较字符串和int中有两种不同的类型。假设您正在进行数值比较,您可能希望将shift_l4显式转换为int。 INT(shift_l4)。

答案 1 :(得分:1)

“file_name”不是文件对象的好名称。 “words”不是表示为字符串的数字集合的好名称。 “shift_l5 = words [4]”和“shift_l6 = words [5]”将失败,因为您只有4个数字。

请注意,print "3"print 3会产生相同的结果。使用print repr(something)而非print something来处理您实际拥有的数据。

试试这个:

f = open("set_initial.txt")
numbers = [int(n) for n in f.read().split()]
print numbers
assert len(numbers) == 4
shift_l1, shift_l2, shift_l3, shift_l4 = numbers
print shift_l1, shift_l2, shift_l3, shift_l4