Updated at 2020-12-02 11:06

判断字符串是否为空/不为空/为空白/不为空白……

# StringUtils.isEmpty(s);
b = not s

# StringUtils.isNotEmpty(s);
b = bool(s)

# StringUtils.isBlank(s);
b = not s.strip() # 无参的`strip()`会清除字符串首尾所有的空格、换行符、制表符

# StringUtils.isNotBlank(s);
b = bool(s.strip())

判断字符串是否包含了列举出的子字符串中的一个

# StringUtils.containsAny(aaa, "q", "w", "e")
if any(sub in aaa for sub in ('q', 'w', 'e')):

any函数会去遍历参数,这个参数必须是可迭代的,一旦any遍历到为True的元素,就返回True
any里面的表达式叫做生成器表达式,是生成器函数的简便写法(可以理解称Java中users.forEach(log::info)这样的写法)

示例中的表达式转化成生成器函数是这样的

def g1():
    for sub in ('q', 'w', 'e'):
        yield sub in aaa 
if (any(g in g1()))

无论是生成器表达式还是生成器函数,他们都代表一个生成器对象,生成器对象是可迭代的

递归地遍历文件夹

# -*- coding: utf-8 -*-

import os

root_dir = 'E:\\test'

i = 1

# print(type(os.walk(root_dir))) # <class 'generator'>
for cur_dir_path, dir_names, file_names in os.walk(root_dir):
    # print(type(cur_dir_path)) # <class 'str'>
    # print(type(dir_names)) # <class 'list'>
    # print(type(file_names)) # <class 'list'>

    print('第{}趟调用os.walk'.format(i))
    i += 1

    for dir_name in dir_names:
        dir = os.path.join(cur_dir_path, dir_name)
        # print(type(dir)) # <class 'str'>
        print('目录:' + dir)

    for file_name in file_names:
        file = os.path.join(cur_dir_path, file_name)
        # print(type(file)) # <class 'str'>
        print('文件:' + file)

Python      Python