-
-
[原创]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