Python - 多个 os.system 命令的替代方案

悟空

下面是 shell 命令,它执行很少的变量和文件操作并将最终文件上传到存储库。

使用重复的 os.system() 是一种选择。有没有更简单优雅的方法来解决这个问题?

即使使用os.system(),我也面临引号问题,并且变量替换会引发错误。

我不想将这些命令用作脚本并执行它:) 任何输入都会非常有帮助,谢谢。

target_folder = tmp_folder+'/tmp'+str(count)
FILE_TYPE = "bundle"
FILE_NAME = "solution"

    os.system('''
    set +x
    file_name_wo_ext="$(cat 'target_folder'/*.yaml| grep -i name | awk '{print $2}' | awk '{print $1}')"
    output_folder="/home/'FILE_NAME'/'FILE_TYPE'/${file_name_wo_ext}/"
    tar_file_name=$(ls $output_folder | grep tar.gz)
    file_path="/home/"+FILE_NAME"/"+FILE_TYPE+"/${file_name_wo_ext}/${tar_file_name}"
    mv $file_path "`basename $file_path .tar.gz`.tgz"
    wget command to upload the file
    ''')

错误:

ls: 无法访问 '/home/+FILE_NAME/+FILE_TYPE+/cat': 没有那个文件或目录

ls: 无法访问 '+target_folder/*.yaml|': 没有那个文件或目录

操作系统:Ubuntu 18.04。

AKX

Python 中的 shell 脚本的近似值可能是这样的。

请注意,如果nameYAML 中有多个行,或者多个.tar.gzes...

import glob
import os


def find_filename_wo_ext(target_folder):
    for yaml_filename in glob.glob(os.path.join(target_folder, "*.yaml")):
        with open(yaml_filename, "r") as yaml_file:
            for line in yaml_file:
                if "name" in line.lower():
                    return line.partition(" ")[-1]  # might be wrong :)


def main():
    tmp_folder = "/tmp"
    count = 1

    target_folder = os.path.join(tmp_folder, f"tmp{count}")
    FILE_TYPE = "bundle"
    FILE_NAME = "solution"

    file_name_wo_ext = find_filename_wo_ext(target_folder)
    output_folder = os.path.join("/home", FILE_TYPE, FILE_NAME, file_name_wo_ext)
    tar_file_name = list(
        glob.glob(os.path.join(output_folder, "*.tar.gz"))
    )[0]
    file_path = os.path.join(output_folder, tar_file_name)
    os.rename(file_path, os.path.splitext(file_path)[0] + ".tgz")
    os.system("wget...")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

蟒 - 使用os.system - 进入与多个文件路径的命令行(替代R“C:\等”)

Python:os.system x实际命令

Python os.system:命令顺序

如何告诉Python等待os.system()的Windows命令完成?

在python中使用os.system()执行linux命令

Python os.system cp命令复制空文件

python 3.4-os.system不执行命令

多个提交的标记替代方案

使用命令行制作单个文件的多个副本的替代解决方案?

Python执行期望命令不匹配的引号问题:python -c'os.system(“ expect -c ...”)'

python os.system命令行将值返回给python

如何使用多个参数执行os.system()

如何使用 python 2 在 os.system 命令中转义/使用单引号?

寻找帮助了解os.system()Python行中的sed命令

从python的“ os.system”调用中调用时,会启动两个“ prstat”命令

Python-什么时候可以使用os.system()发出常见的Linux命令

如何在Python中使用'os.system('command')'向CMD发送命令列表

终止Python进程并停止其底层os.system命令行

使用python在os.system的参数中使用一行“找不到命令”

Python os.system 不返回与命令提示符相同的数据

如何在python中列出os.system()中列出的命令?

python结构多个命令

JavaScript中多个if else语句的替代方案?

是否可以有多个参数替代方案?

Python:os.system的输入被拆分

System.exit(1)的替代方案

gnome-system-monitor的替代方案?

什么是system(“ CLS”)的简单替代方案?

多行命令到os.system