Python:使用'__contains__`的其他选项?我被告知我不应该使用它

phy*_*xic 2 python contains

我有一个工作文件[下面],但我想知道前三行是否有更好的解决方案.

我在一个文件夹中有几个文件,一个脚本根据<string>每个文件名中的特定和保存来处理它们.但是,我被告知我不应该使用__contains__(我不是CS专业,并不完全理解为什么).有更好的选择吗?我找不到任何其他简洁的解决方案.

谢谢.

files = os.listdir (work_folder)
for i in files:
    if i.__contains__('FOO'):
        for i in range (number_of_files):
            old_file = 'C:/path/to/file'
            with open(merged_file, 'a+') as outfile:
                with open(old_file) as infile:
                    for line in infile:
                        outfile.write(line)
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 8

通常在Python中,不应直接调用双下划线方法; 您应该使用与它们对应的全局函数或运算符.在这种情况下,你会这样做if 'FOO' in i.


wim*_*wim 5

写作会更常见

if 'FOO' in i:
Run Code Online (Sandbox Code Playgroud)

代替

if i.__contains__('FOO'):
Run Code Online (Sandbox Code Playgroud)

但是,我会更进一步,并建议您的用例更适合 glob

import glob
foo_files = glob.glob(os.path.join(work_folder, '*FOO*'))
Run Code Online (Sandbox Code Playgroud)