[原创]python 动态生成变量及给变量赋值
2023-6-15 00:54:20 Author: bbs.pediy.com(查看原文) 阅读量:11 收藏

[原创]python 动态生成变量及给变量赋值

5天前 1799

在工作中遇到这么一个情况,在某个文件夹下有很多文件,还有可能在文件夹下还有文件夹;
文件夹下的文件内容是从数据库中导出的,具有特定的格式;
我需要将这个目录下的所有文件进行读取;
变量类型需要两种,list和dict;
变量名就是文件名,变量需要赋值的内容就是文件内容。

在没想到通过动态生成变量名及动态给变量赋值时,实现方式:

1

2

3

4

5

6

7

8

9

10

name_list = []

with open(r'path', 'r', encoding='UTF-8') as f:

    name_mes = f.read()

    name_mes = name_mes.split('\n')

    for key_mess in name_mes[:]:

        if key_mess != '':

            key_mes = key_mess.split('\t')

            index_mes = key_mes[2]

            name_list.append(index_mes)

self.name_dict = dict(zip(name_list, name_mes))

一个文件就需要一个实现,经常几千上万个文件,想想这个代码量,恐怖!!!

目的动态生成了变量、读取文本文件、处理文件内容并生成字典。
通过下述代码,可以将指定文件夹中的多个文本文件转换为字典形式的数据存储。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

self._path = path

file_names = [os.path.join(root, file) for root, dirs, files in os.walk(self._path) for file in files if os.path.splitext(file)[1] == ".txt"]

for file_path in file_names:

    file_name = file_path.replace(self._path, '').replace('\\', '_')

    var_value = os.path.splitext(file_name)[0

    var_key = 'self.' + os.path.splitext(file_name)[0] + '_list'

    var_dict = 'self.' + os.path.splitext(file_name)[0] + '_dict'

    exec(f'{var_value}=[]')

    exec(f'{var_key}=[]'

    exec(f'{var_dict}={{}}'

    with open(file_path, 'r', encoding='utf-8') as f:

        txt_content = f.read()

        exec(f"{var_value} = txt_content.split('\\n\\n')")

    for item in eval(var_value):

        if item != '':

            key_mes = item.split('\t')

            index_mes = key_mes[0]

            exec(f"{var_key}.append(index_mes)")

    exec(f"{var_dict} = dict(zip(eval(var_key), eval(var_value)))")

实践读数据库表也可以这么操作,省时省力,灰常好用!

[2023春季班]2023,新的征程,脱壳机更新、iOS/eBPF、赠送云手机套装!一块裸板虚拟化五个容器云手机!3月25日起同时上调价格并赠送新设备!

最后于 5天前 被行简编辑 ,原因:

返回


文章来源: https://bbs.pediy.com/thread-277624.htm
如有侵权请联系:admin#unsafe.sh