我试图从存储在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中数字的数值,但可能只是文本值?我不知道怎么解决它。任何帮助或想法?
谢谢
答案 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