下面是从文件名提取名的函数:
def getname(astr):
import os.path
name = os.path.basename(astr)
name = os.path.splitext(name)[0]
return name
从你的文件名列表,我可以得到的“变量”名称的列表:
In [150]: filenames = ['Desktop/folder/dog.jpg', 'Desktop/folder/fish.jpg', 'Desktop/folder/lizard.jpg']
In [155]: [getname(i) for i in filenames]
Out[155]: ['dog', 'fish', 'lizard']
但是,而不是尝试把它们放在全球名字空间中,我建议将它们收集在一本字典中:
In [156]: adict = {getname(i): i for i in filenames}
In [157]: adict
Out[157]:
{'dog': 'Desktop/folder/dog.jpg',
'fish': 'Desktop/folder/fish.jpg',
'lizard': 'Desktop/folder/lizard.jpg'}
或者如果用read
功能:
adict = {getname(i): read(i) for i in filenames}
通常在Python它是更加有用的,以收集对象,如这些图像中,在列表或字典,而不是试图分配每一个以独立的变量。
写出adict['fish']
就像是fish
一样容易。有了字典,你可以很容易地“回路”全在设置
for k,v in adict.items():
print('name:',k)
display(v)
注释链接的有关分配给变量,为什么普遍认为是一个贫穷的想法做题一整串。
我不明白你想做什么,特别是当你的伪代码给函数调用分配了某些东西时。 – TigerhawkT3
你可以参考答案http://stackoverflow.com/questions/19122345/to-convert-string-to-variable-name这是类似于你想要的 –