gpt4 book ai didi

Python的endswith()函数无法避免复制.py文件

转载 作者:行者123 更新时间:2023-12-01 05:00:16 26 4
gpt4 key购买 nike

我正在尝试根据扩展名复制一些文件。我的目标是复制除 ext_to_avoid 变量中的扩展名之外的所有内容。但是,我失败了,因为它复制了我不想要的 .py 文件。我知道endswith需要一维变量或元组才能工作。

我的脚本的一部分如下:

x = os.getcwd()
ext_to_avoid = (".xml", ".bat", ".py", ".txt");
list_of_files_to_copy = []
for root, dirs, files in os.walk(x):
for name in files:
if not any([name.endswith(x) for x in ext_to_avoid]):
print(os.path.join(root,name))
list_of_files_to_copy.append(os.path.join(root,name))

我不确定它出了什么问题。有人能指出我正确的方向吗?

最诚挚的问候,

最佳答案

您有许多文件扩展名需要检查。由于函数“endswith”接受单个字符串作为参数,因此给定一个name,您需要针对每个ext对其进行测试:

matches = False
for ext in ext_to_avoid:
if name.lower().endswith(ext):
matches = True
break
if not matches:
# ...

更简单的一个衬垫可以是:

if not any([name.lower().endswith(ext) for ext in ext_to_avoid]):
# ...

编辑:嗯,看来str.endswith还将接受一个元组。意味着你的原始代码是正确的;尝试始终检查小写:

if not name.lower().endswith(ext_to_avoid):
# ...

关于Python的endswith()函数无法避免复制.py文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26400001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com