Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中连接一个字符和两个或多个整数,并存储它们以供程序中进一步使用?_Python - Fatal编程技术网

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

如何在Python中连接一个字符和两个或多个整数,并存储它们以供程序中进一步使用?,python,Python,在我的代码中,我想在for循环中连接一个字符D和两个整数l和I 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[-

在我的代码中,我想在for循环中连接一个字符
D
和两个整数
l
I

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
这里的
New1
New2
是根目录
B1
的两个子目录。
此外,我还想使用
D10
D11
进一步使用。

您可以使用字典和
Dli
来代替创建新变量

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

您可以使用字典和
Dli
,而不是创建新变量

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

您可以使用变量来保存它们的变量以供进一步使用


vars()['new\u global\u var']='bla'


打印新的\u全局\u变量

您可以使用变量保存其变量以供进一步使用


vars()['new\u global\u var']='bla'


打印新的\u全局\u变量

使用动态生成的变量名是个坏主意。可以使用直接
\uuuu dict\uuuu
访问,但是您以后的代码无法知道使用的名称。相反,使用列表或字典,您可以对其进行索引(或迭代)。下面是一个使用
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]))

使用动态生成的变量名是个坏主意。可以使用直接
\uuuu dict\uuuu
访问,但是您以后的代码无法知道使用的名称。相反,使用列表或字典,您可以对其进行索引(或迭代)。下面是一个使用
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]))

我只是根据代码的样子猜测,而不是

 Dli = p[-1] + os.sep + dirs[i]
你不应该使用

os.path.join(p[-1], dirs[i])
在通常情况下,使用文件路径时,您不必担心
os.sep

我认为您需要在执行
string.split
时查看os.path,而
os.path.split
可能是您真正想要的


我认为您正在尝试解决一个
os.path
已经解决的问题

我只是根据代码的外观猜测,而不是

 Dli = p[-1] + os.sep + dirs[i]
你不应该使用

os.path.join(p[-1], dirs[i])
在通常情况下,使用文件路径时,您不必担心
os.sep

我认为您需要在执行
string.split
时查看os.path,而
os.path.split
可能是您真正想要的

我认为您正在尝试解决一个
os.path
已经解决的问题

简易方法:

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):
        varName = 'D%d%d' % (l, i)
        globals()[varName] = p[-1] + os.sep + dirs[i]
        print(globals()[varName])
我希望它有帮助:)

简单方法:

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):
        varName = 'D%d%d' % (l, i)
        globals()[varName] = p[-1] + os.sep + dirs[i]
        print(globals()[varName])

我希望它能有所帮助:)

您当前的代码有什么问题?因此,l是基于1的,而我是基于0的?@ValekHalfHeart:我能够获得“B1\New1”和“B1\New2”的输出。但无法保存D10和D11以供进一步使用。类似于“C”语言中的sprintf()函数。您当前的代码有什么问题?那么l是基于1的,而我是基于0的?@ValekHalfHeart:我可以得到“B1\New1”和“B1\New2”的输出。但无法保存D10和D11以供进一步使用。类似于“C”语言中的sprintf()函数。