我正在编写代码来更改文件扩展名

问题描述 投票:0回答:1

我已经到达代码输出新文件名的位置,但它不会更改我想要的预期文件。这是下面的代码。我错过了什么。

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
python for-loop list-comprehension
1个回答
2
投票

在循环中,您分配给

new_filename
,这与
filenames
new_filenames
无关。如果列表中存在不包含
.hpp
的文件名,只需将
new_filenames
设置为
filenames
即可,未进行任何修改。

使用列表理解:

new_filenames = [filename.replace('.hpp', '.h') for filename in filenames]

不需要

if
声明。如果文件名不包含
.hpp
,它将原封不动地复制到结果中。

© www.soinside.com 2019 - 2024. All rights reserved.