1. 程式人生 > >4-2如何判斷字符串a是否以字符串b開頭或結尾

4-2如何判斷字符串a是否以字符串b開頭或結尾

ima () system 知識 win test 如何判斷 .py bsp

技術分享圖片

1、相關介紹

1.1修改文件權限和查看文件權限

windows平臺實驗時 os.chmod()無法將文件權限修改為可執行,暫不深究如何實現。在linux平臺進行測試。

(1)創建三個文件

python@ubuntu:/tmp/vmware-python$ ls

vmware-apploader-5673.log

python@ubuntu:/tmp/vmware-python$ touch a.py b.sh c.txt

python@ubuntu:/tmp/vmware-python$ ls -l

總用量 8

-rw-rw-r-- 1 python python 0 10月 26 17:26 a.py

-rw-rw-r-- 1 python python 0 10月 26 17:26 b.sh

-rw-rw-r-- 1 python python 0 10月 26 17:26 c.txt

-rw-r----- 1 python python 4532 10月 26 17:22 vmware-apploader-5673.log

2)在linux shell界面進入python shell

python@ubuntu:/tmp/vmware-python$ python

Python 2.7.12 (default, Jul 1 2016, 15:12:24)

[GCC 5.4.0 20160609] on linux2

Type "help", "copyright", "credits" or "license" for more information.

(3)查看文件權限

>>> import os,stat
>>> os.stat(a.py)

posix.stat_result(st_mode=33204, st_ino=786703, st_dev=2049, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1509009983, st_mtime=1509009983, st_ctime=1509009983)

>>> oct(os.stat(
a.py).st_mode)

‘0100664‘ #其中 “664”就是權限代碼

4)修改文件權限

>>> stat.S_IXUSR  #執行權限的掩碼
64
>>> os.chmod(a.py,os.stat(a.py).st_mode |stat.S_IXUSR)
>>> oct(os.stat(a.py).st_mode)
0100764
>>> exit()

再次查看文件權限

python@ubuntu:/tmp/vmware-python$ ls

a.py b.sh c.txt vmware-apploader-5673.log

python@ubuntu:/tmp/vmware-python$ ls -l

總用量 8

-rwxrw-r-- 1 python python 0 10月 26 17:26 a.py

-rw-rw-r-- 1 python python 0 10月 26 17:26 b.sh

-rw-rw-r-- 1 python python 0 10月 26 17:26 c.txt

-rw-r----- 1 python python 4532 10月 26 17:22 vmware-apploader-5673.log

1.2用符串的endswith()的方法

>>> s = a.py
>>> s.endswith(.py)
True

endswith()可以接受元組參數,只要滿足元組的一項,即為真。(參數只能是元組不能是列表)

>>> s.endswith((.py,.sh))
True
>>> s.endswith((.sh,.txt))
False

2、實現方法

>>> import os,stat
>>> [x for x in os.listdir(.) if x.endswith((.sh,.py))]
[a.py, b.sh]

>>> lFile = [x for x in os.listdir(.) if x.endswith((.sh,.py))]
>>> for x in lFile:
...     os.chmod(x,os.stat(x).st_mode | stat.S_IXUSR)
... 
>>> os.listdir(.)
[vmware-apploader-5673.log, c.txt, a.py, b.sh]
>>> exit()

查看文件權限:

python@ubuntu:/tmp/vmware-python$ ls -l

總用量 8

-rwxrw-r-- 1 python python 0 10月 26 17:26 a.py

-rwxrw-r-- 1 python python 0 10月 26 17:26 b.sh

-rw-rw-r-- 1 python python 0 10月 26 17:26 c.txt

-rw-r----- 1 python python 4532 10月 26 17:22 vmware-apploader-5673.log

>>> import os
>>> [x for x in os.listdir(.) if x.endswith((.sh,.py))]
[a.py, b.sh]

3、擴展知識

3.1 os.stat()

技術分享圖片
>>> help(os.stat)
Help on built-in function stat in module nt:

stat(...)
    stat(path) -> stat result
    
    Perform a stat system call on the given path.
help(os.stat)

獲取文件屬性:os.stat(file),如本例中

>>> os.stat(a.py)
posix.stat_result(st_mode=33204, st_ino=786703, st_dev=2049, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1509009983, st_mtime=1509009983, st_ctime=1509009983)

3.2 str.startswith()

技術分享圖片
>>> help(str.startswith)
Help on method_descriptor:

startswith(...)
    S.startswith(prefix[, start[, end]]) -> bool
    
    Return True if S starts with the specified prefix, False otherwise.
    With optional start, test S beginning at that position.
    With optional end, stop comparing S at that position.
    prefix can also be a tuple of strings to try.
help(str.startswith)

3.3 str.endswith()

技術分享圖片
>>> help(str.endswith)
Help on method_descriptor:

endswith(...)
    S.endswith(suffix[, start[, end]]) -> bool
    
    Return True if S ends with the specified suffix, False otherwise.
    With optional start, test S beginning at that position.
    With optional end, stop comparing S at that position.
    suffix can also be a tuple of strings to try.
help(str.endswith)

4-2如何判斷字符串a是否以字符串b開頭或結尾