zoukankan      html  css  js  c++  java
  • 如何判断字符串a是否以字符串 b开头或者结尾?

    需求:
    某文件系统目录下有一系列文件:
    quickshort.c
    graph.py
    heap.java
    install.sh
    stack.cpp
    ...
    编写程序给其中的所有.py和.sh结尾的文件加上用户可执行权限

    思路:
    使用str.startswith()和str.endswith()方法
    (注意多个匹配时,参数使用元组)

    代码:

    >>> fn = 'aaa.py'
    
    >>> fn.endswith('.py')
    True
    
    >>> fn.endswith('.c')
    False
    
    >>> fn.endswith(('.py','.sh'))
    True
    
    >>> ls
    a.c  b.py  c.java  d.sh  e.cpp  h.asm
    
    >>> os.listdir('.')
    ['d.sh', 'c.java', 'e.cpp', 'h.asm', 'b.py', 'a.c']
    
    >>> d = os.listdir('.')
    
    >>> os.stat('b.py')
    os.stat_result(st_mode=33188, st_ino=536578, st_dev=66312, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1604280862, st_mtime=1604280862, st_ctime=1604280862)
    
    >>> s = os.stat('b.py')
    
    >>> s
    os.stat_result(st_mode=33188, st_ino=536578, st_dev=66312, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1604280862, st_mtime=1604280862, st_ctime=1604280862)
    
    >>> s.st_mode
    33188
    
    >>> ls -l b.py
    -rw-r--r-- 1 richardo richardo 0 11月  2 09:34 b.py
    
    >>> oct(s.st_mode)
    '0o100644'
    
    >>> s.st_mode | 0o100
    33252
    
    >>> oct(s.st_mode | 0o100)
    '0o100744'
    
    >>> oct(0o100)
    '0o100'
    
    >>> oct(0o100644 | 0o100)
    '0o100744'
    
    >>> 0o100644 | 0o100
    33252
    
    >>> oct(s.st_mode | s.st_mode)
    '0o100644'
    
    >>> s.st_mode
    33188
    
    >>> s
    os.stat_result(st_mode=33188, st_ino=536578, st_dev=66312, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1604280862, st_mtime=1604280862, st_ctime=1604280862)
    
    >>> os.chmod('b.py',s.st_mode | 0o100)
    
    >>> ll
    总用量 0
    -rw-r--r-- 1 richardo 0 11月  2 09:34 a.c
    -rwxr--r-- 1 richardo 0 11月  2 09:34 b.py*
    -rw-r--r-- 1 richardo 0 11月  2 09:34 c.java
    -rw-r--r-- 1 richardo 0 11月  2 09:34 d.sh
    -rw-r--r-- 1 richardo 0 11月  2 09:34 e.cpp
    -rw-r--r-- 1 richardo 0 11月  2 09:34 h.asm
    
    >>>  import stat
    
    >>> stat.S_IXUSR
    64
    
    >>> for fn in os.listdir():
    ...     if fn.endswith(('.py','.sh')):
    ...         fs = os.stat(fn)
    ...         os.chmod(fn,fs.st_mode | stat.S_IXUSR)
    ... 
    
    >>> ll
    总用量 0
    -rw-r--r-- 1 richardo 0 11月  2 09:34 a.c
    -rwxr--r-- 1 richardo 0 11月  2 09:34 b.py*
    -rw-r--r-- 1 richardo 0 11月  2 09:34 c.java
    -rwxr--r-- 1 richardo 0 11月  2 09:34 d.sh*
    -rw-r--r-- 1 richardo 0 11月  2 09:34 e.cpp
    -rw-r--r-- 1 richardo 0 11月  2 09:34 h.asm
    
  • 相关阅读:
    并行数据的并行转串行
    色彩空间转换仿真与模型搭建
    布隆过滤器介绍和在java中应用举例
    java9初探
    个人博客开通啦!
    MyBatis多租户隔离插件开发
    手动解析Excel获取文件元数据
    解决Shiro+SpringBoot自定义Filter不生效问题
    基于Redis的分布式锁实现
    解决tomcat同时部署两个SpringBoot应用提示InstanceAlreadyExistsException
  • 原文地址:https://www.cnblogs.com/Richardo-M-Q/p/13913062.html
Copyright © 2011-2022 走看看