为什么for-loop中的元素没有更新?这让我
met_dir = r'D:\09052012\run\fout'
out_dir = r'D:\inpassingstest\test_cmd'
for c_dir in [met_dir,out_dir]:
if c_dir[-1:] != '\\':
c_dir += '\\'
print c_dir
print met_dir
>>>D:\09052012\run\fout\
>>>D:\inpassingstest\test_cmd\
>>>D:\09052012\run\fout
当我使用索引来处理元素时也会发生相同的情况。
答案 0 :(得分:4)
字符串是不可变对象,也就是说,您无法更改它,而是创建新字符串。这意味着当您附加到字符串时,原始文件保持不变。对此的简单解决方案是列表理解,以创建新字符串的新列表:
>>> [c_dir + "\\" if not c_dir.endswith("\\") else c_dir for c_dir in (met_dir, out_dir)]
['D:\\09052012\\run\\fout\\', 'D:\\inpassingstest\\test_cmd\\']
哪一个可以轻松解包回值:
met_dir, out_dir = [...]
请注意我使用str.endswith()
这是一种很好的检查方式。
答案 1 :(得分:2)
字符串在Python中是不可变的。 c_dir += '\\'
创建一个附加\\
的新字符串,但不替换原始字符串。
答案 2 :(得分:2)
str
是不可变的,你不能改变它们的内容。在这一行中会发生什么:
c_dir += '\\'
局部变量c_dir
将替换为新字符串(附加\
)。离开循环迭代时,这个新字符串会丢失。