微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 LibreOffice 宏将 os.system() 命令写入 python 脚本并执行它?

如何解决如何使用 LibreOffice 宏将 os.system() 命令写入 python 脚本并执行它?

我是宏的新手。

目标:

在系统上本地制作 python 脚本并向其添加代码(以生成 shell),最后使用 LibreOffice 宏执行脚本。

代码

Sub Main

    Shell("bash -c 'touch openshell.py'")
    Shell("bash -c 'echo import os > openshell.py'")
    Shell("bash -c 'echo os.system("gnome-terminal 'sudo apt-get update'") >> openshell.py'")
    Shell("bash -c 'python -m openshell.py'")

    
End Sub

错误

BASIC Syntax error.
Parentheses do not match.

有趣的是,openshell.py 脚本已创建import os 命令正在运行

但是 "Shell("bash -c 'echo os.system("gnome-terminal 'sudo apt-get update'") >> openshell.py'")

中转义存在问题

如何使用宏正确转义并将上述python代码添加到已经创建的openshell.py中而不会出错并执行它?

解决方法

Basic 中的字符串和文件处理语法很棘手。好消息是 LibreOffice 宏可以用 python 编写。使用 APSO 运行以下宏。

def create_and_run_script():
    filename = "path/to/openshell.py"
    with open(filename,'w') as out_file:
        out_file.write("""
import os
os.system("gnome-terminal 'sudo apt-get update'")
""")

然后看What is the best way to call a script from another script?

然而,这似乎不必要地复杂。下面的代码是一个完全合法的宏,可以使用 APSO 或工具 -> 宏 -> 运行宏运行。

import os

def do_update():
    os.system("gnome-terminal 'sudo apt-get update'")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。