从列表中提取Vars并将其应用于函数

时间:2018-08-10 16:18:49

标签: python python-3.x loops dynamic-programming

我正在使用纯Python 3进行工作:

如果我带上扫描仪,(因为我在库存中工作),并且我扫描的所有内容都变成了文本文档,并且我扫描了位置“ 117”,然后又扫描了其他位置的任何设备,(以下几行在文本文档“ 100203”中运行),然后运行该脚本,它将在数据库中的搜索中插入“ 117”,并将每个设备(无论是否已分配给该位置)更改为该位置,(验证那些设备位于位置“ 117”)

我的主要问题是下面的“目标”列表中的第三个目标,其后没有“完成”。

目标:

  • 从文本文档中提取字符串,将其转换为字典。 =(Text_Dictionary)**Done**

  • 将字典中的第一个变量分配给一个单独的变量。 =(第一行)**Done**

  • 所有进行中的var大于字典中的第一个var都应单独传递给函数。 =(Proceeding_Lines)

  • 侧面说明:代码应以一种方式循环,该方式应(.pop)字典/列表中的var,但是我愿意接受其他选择。 (不是强制性的)

我已经拥有的是:

Project.py:

1    import re
2    import os
3    import time
4    import sys
5
6    with open(r"C:\Users\...\text_dictionary.txt") as f:
7        Text_Dictionary = [line.rstrip('\n') for line in 
8    open(r"C:\Users\...\text_dictionary.txt")]
9
10   Text_Dict = (Text_Dictionary)
11   First_Line = (Text_Dictionary[0])
12   
13   print("The first line is: ", First_Line)
14   
15   end = (len(Text_Dictionary) + 1)
16   i = (len(Text_Dictionary))
17 

表面上没有什么,但是我要复制另一个“ *.py”文件代码,以执行希望在每个var中执行的操作Text_Dictionary.txt。第15至16行是让我搞不清楚我认为可以解决此问题的方法。

在导入的文本文档中,变量的外观非常接近于此(相同长度)(全数字):

Text_Dictionary.txt:

117
23000
53455
23454
34534
...

注意::每次运行代码时,这些值都会更改,这意味着有人每次都会在这些数字行中键入/扫描。

解释的概念:

理想情况下,我希望第一行指向一个方向,其余数字将跟随该方向;但是,每个(示例:'53455')需要分别运行,然后下一行才能运行,而(示例:'117')将是'53455'所在的位置。您可以说第一行在整个代码中都是静态的,除非在Text_Dictionary.txt中进行了更改。 '117'与每次迭代一起运行。

背景: 这是用于我的办公室的库存管理,我为此没有任何报酬,但这会使我的工作变得轻松很多。另外,我知道基本的Python入门知识,但这有点困扰我。谢谢任何回答!

1 个答案:

答案 0 :(得分:0)

我不知道你在问什么,但我会猜测一下。在我这样做之前,您的代码让我很烦:

with open("file.txt") as f:
    product_ids = [line.strip() for line in f if not line.isspace()]

在那里。这就是您所需要的。这样也可以防止文件中的空白行和奇怪的不可见空间。我决定将数据保留为字符串,因为它可能表示库存ID,并且将来可能会升级为"53455-b.42454#62dkMlwee"

我要冒昧地猜测您要根据顶部的数字运行不同的代码。如果是这样,则可以使用包含函数的字典。您说过要从另一个文件运行代码,所以这是another_file.py

__all__ = ["dispatch_whatever"]

dispatch_whatever = {}

def descriptive_name_for_117(product_id):
    pass
dispatch_whatever["117"] = descriptive_name_for_117

再返回到main_program.py,该文件存储在同一目录中:

from another_file import dispatch_whatever

for product_id in product_ids[1:]:
    dispatch_whatever[product_ids[0]](product_id)