将文本文件与数字相关联

时间:2017-06-09 17:31:36

标签: python

您好,感谢您寻找:)

我对编码比较陌生,但我喜欢尽可能多地为自己搞清楚。我遇到了一个我不知道从哪里开始的情况。

基本上我正在尝试为设备制作升级程序。我有一个文本文件,其中包含要升级到文本文件的不同行的软件版本的名称。

我想要做的是打印一个数字,从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文件相关联,以便稍后在程序中处理。如果我不清楚,我很抱歉。非常感谢你。

2 个答案:

答案 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')