我已经到达代码输出新文件名的位置,但它不会更改我想要的预期文件。这是下面的代码。我错过了什么。
filenames = ["program.c", "stdio.hpp", "sample.hpp", "a.out", "math.hpp", "hpp.out"]
new_filenames = " "
for filename in filenames:
if filename.endswith(".hpp"):
new_filename = filenames.replace(".hpp", ".h")
else:
new_filenames = filenames
print(new_filenames) # it prints out the whole list but it doesn't change ".hpp" to ".h" in the new list
在循环中,您分配给
new_filename
,这与 filenames
或 new_filenames
无关。如果列表中存在不包含 .hpp
的文件名,只需将 new_filenames
设置为 filenames
即可,未进行任何修改。
使用列表理解:
new_filenames = [filename.replace('.hpp', '.h') for filename in filenames]
不需要
if
声明。如果文件名不包含 .hpp
,它将原封不动地复制到结果中。