如何在Python中连接一个字符和两个或更多整数并将它们存储以便在程序中进一步使用?

2024-09-29 00:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的代码中,我想在for循环中连接一个字符D和两个整数li。你知道吗

l = 1
for root, dirs, files in os.walk(r'D:\Python_Programs\B1'):
p = root.split('\\')
NoOfDir = len(dirs)                 #Here NoOfDir is 2 for my directory structure
    for i in range(0, NoOfDir):
        Dli = p[-1] + os.sep + dirs[i]
        print(Dli)

所需输出:

B1\New1    # As D10
B1\New2    # As D11

这里New1New2是根目录B1的两个子目录。 我还想使用D10D11进一步使用。你知道吗


Tags: 代码inforosasroot字符b1
3条回答

您可以使用字典和Dli来代替创建新变量。你知道吗

Dli = 'D'+str(l)+str(i)
new_dic[Dli] = p[-1] + os.sep + dirs[i]

您可以使用vars来保存变量以供进一步使用。你知道吗

vars()['new_global_var'] = 'bla'

print new_global_var

使用动态生成的变量名是个坏主意。使用直接__dict__访问是可能的,但是对于以后的代码来说,没有好的方法可以知道所使用的名称。相反,使用一个列表或字典,你可以索引(或迭代)。以下是使用D字典的代码版本,其中键是(l, i)元组:

l = 1 # I assume this gets incremented somewhere not shown
D = {}

for root, dirs, files in os.walk(r'D:\Python_Programs\B1'):
    p = os.path.split(root)
    for i, dir in enumerate(dirs):
        D[l, i] = os.path.join(p[-1], dir)
        print("D[{}, {}] = {}".format(l, i, D[l, i]))

但是这仍然有一个逻辑问题,因为字典键在外循环的迭代之间不是唯一的。也许这就是l应该递增的地方?如果是这样,这里有一个从enumerate获得l的替代版本:

import os.path

D = {}

for l, (root, dirs, files) in enumerate(os.walk(r'D:\Python_Programs\B1')):
    p = os.path.split(root)
    for i, dir in enumerate(dirs):
        D[l, i] = os.path.join(p[-1], dir)
        print("D[{}, {}] = {}".format(l, i, D[l, i]))

相关问题 更多 >