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