sed和rev shell命令转换为Python脚本[重复]

fhg3lkii  于 2023-01-26  发布在  Shell
关注(0)|答案(1)|浏览(117)
    • 此问题在此处已有答案**:

(19个答案)
Replace part of a string in Python?(3个答案)
昨天关门了。
有一个shell命令,我正在尝试把逻辑转换成python。但是我不知道该怎么做,我需要一些帮助。
shell命令如下所示:

cd ../../../tests/src/main/test
ls
find . -name '*.vrlp' | while read FILENAME
do
    TEST_CASE=`echo $FILENAME | sed s/"\.\/"//g | sed s/"\.vrlp"//g | rev | cut -f1 -d"/" | rev`
    CLASS=`echo $FILENAME | sed s/"\.\/"//g | sed s/"\/$TEST_CASE"//g | sed s/"\.vrlp"//g`

逻辑位于目录内,使用find. -name '*. vrlp'筛选所有现有文件,包括所有子文件夹
然后将数据检索到参数中。

TEST_CASE=`echo $FILENAME | sed s/"\.\/"//g | sed s/"\.vrlp"//g | rev | cut -f1 -d"/" | rev`
    CLASS=`echo $FILENAME | sed s/"\.\/"//g | sed s/"\/$TEST_CASE"//g | sed s/"\.vrlp"//g`

我尝试了类似下面的方法,但是我不知道sed命令的确切作用以及如何将其转换为python脚本。
为了检索发送到参数CLASS和TESTCASE的数据,我做了剪切(

cut -f1 -d"/"

),但我不知道如何执行sed和rev来检索TEST_CASE和CLASS的值

for root, dirs, files in os.walk(../../../tests/src/main/test):
    for file in files:
        file_name = os.path.basename(file)
        file = os.path.splitext(file_name)
        if '.vrlp' in file:
            FILENAME = file[0] + file[1]
                TEST_CASE = FILENAME.split("/")[0] // how to apply sed and rev here?
                CLASS = FILENAME // how to apply sed here?

任何帮助都将不胜感激

v440hwme

v440hwme1#

TEST_CASE=命令获取FILENAME的值,删除./前缀和. vrlp后缀,反转字符顺序,提取基于/作为分隔符的第一个字段,然后再次反转字符顺序。
然后,CLASS=命令获取FILENAME的值,删除./前缀、/$TEST_CASE后缀和. vrlp后缀。
在python中:

import os

os.chdir("../../../tests/src/main/test")
print(os.listdir())

for FILENAME in os.popen("find . -name '*.vrlp'"):
    FILENAME = FILENAME.strip()
    TEST_CASE = os.path.basename(FILENAME).replace(".vrlp", "")
    CLASS = os.path.dirname(FILENAME).replace("./", "").replace("/{}".format(TEST_CASE), "").replace(".vrlp", "")

相关问题