上传整个文件夹时,如何为其分配所有相关变量名称?

时间:2017-01-02 05:11:05

标签: python

假设我正在上传

"frameworks": {
    "netstandard1.5": {}
  }


"frameworks": {
    "netstandard1.5": {
      "imports": "portable-net45+netcore45+wp8"
    }
  }

我理论上可以做类似的事吗

Desktop/folder/dog.jpg, Desktop/folder/fish.jpg, Desktop/folder/lizard.jpg

因此,如果不手动执行每个操作,最终会像

一样
a = ['Desktop/folder/dog.jpg', 'Desktop/folder/fish.jpg', 'Desktop/folder/lizard.jpg']

for x in a
    b = read(x)
    regex(x)= b

1 个答案:

答案 0 :(得分:1)

这是一个从文件名中提取名称的函数:

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几乎一样容易。使用字典,您可以轻松地循环播放#39;在整个集合

for k,v in adict.items():
   print('name:',k)
   display(v)

评论链接到关于分配给变量的一整串SO问题,以及为什么通常这是一个糟糕的想法。