您好,感谢您寻找:)
我对编码比较陌生,但我喜欢尽可能多地为自己搞清楚。我遇到了一个我不知道从哪里开始的情况。
基本上我正在尝试为设备制作升级程序。我有一个文本文件,其中包含要升级到文本文件的不同行的软件版本的名称。
我想要做的是打印一个数字,从1到文件结束的任何地方,并将该数字存储在一个变量中,该变量将调用旁边打印的相关版本号。
我已经创建了一些东西来反映我正在谈论的内容,但是没有办法(至少我不这么认为)将count变量与之后打印的版本相关联。
def modify_ftp(self):
with open('/tmp/ftp', 'r') as f:
data = f.read().splitlines()
count = 0
for line in data:
if line.endswith('.bin'):
count = count + 1
print ("> " + str(count) + " <", line)
selection = raw_input("\tSelect a version of code to upgrade/downgrade to")
os.remove('/tmp/ftp')
产生类似于
的输出('> 1 <', 'a.bin')
('> 2 <', 'b.bin')
('> 3 <', 'c.bin')
('> 4 <', 'd.bin')
('> 5 <', 'e.bin')
('> 6 <', 'f.bin')
('> 7 <', 'g.bin')
('> 8 <', 'h.bin')
首先,我要说我确信有更好的方法可以做到这一点(即使是非功能性的编程方法)。我想在下一行请求输入选择,并且该选择将与相关的* .bin文件相关联,以便稍后在程序中处理。如果我不清楚,我很抱歉。非常感谢你。
答案 0 :(得分:1)
这些行已存储在列表(数据)中,因此您只需执行
即可访问行号runFile = data[selection - 1]
我们selection - 1
正确编制索引,因为您的编号系统从1开始编制索引,而列表索引从0开始
注意:假设您需要版本的序列号。如果你想要一个更抽象的方法,我会探索词典here并学习如何成对地关联数据。
这实际上取决于您计划如何选择关联的数字。可能最好将这种数据放在文件中,因为它似乎无论如何都会硬编码到程序中。
答案 1 :(得分:0)
我决定使用数组来存储值:
def modify_ftp(self):
with open('/tmp/ftp', 'r') as f:
data = f.read().splitlines()
count = 0
arr = []
for line in data:
if line.endswith('.bin'):
count = count + 1
arr.append(line)
print ("> " + str(count) + " <", line)
selection = raw_input("\tSelect (i.e. 1, 2... 15) a version of code to upgrade/downgrade to: ")
然后,我可以使用存储在“selection”
中的数字来引用版本值print (arr[int(selection) - 1])
os.remove('/tmp/ftp')