【问题标题】:executing a .sh file from python indicating an absolute path从 python 执行一个 .sh 文件,指示绝对路径
【发布时间】:2016-12-11 19:35:39
【问题描述】:

我对 python 世界有点陌生,我在运行 bash 文件时遇到了一些问题,该文件将自动从我的 python 脚本(使用 linux)。

我将我的 python 脚本设置为在我的桌面某处的目录中创建一个文本文件 .geo 和一个 Bash 文件 .sh,如下所示:

    basedirectory="/home/pst2/Desktop/";
    *//Writing the .geo file* 
    file = open(basedirectory+nomdossier+"/"+nomfichier+".geo", 'w');
    file.write
        ..blabla
        ..blabla
    file.close();
    //Writing the .sh file 
    file = open(basedirectory+nomdossier+"/"+nomfichier+".sh", 'w');
    file.write
        ..blabla
        ..blabla
    file.close();

现在,我的脚本与所有设置的变量完美配合,工作正常,我创建的两个文件都在这个目录中(例如在运行 python 脚本并输入变量之后)

     /home/pst2/Desktop/test/ 
     (and in here you will find the new test.geo and test.sh that were created via the python script)

基本上,当使用 Bash test.sh“手动”执行时 test.sh(每当我在 ubuntu 上的目录中时)将在同一目录中创建另一个名为 test.msh 的文件 而且我似乎找不到正确的编码,使用子进程模块从脚本自动执行新创建的 test.sh 文件。 有没有办法这样做,比如指示.sh文件的绝对路径 (在我们的例子中是 basedirectory+nomdossier+"/"+nomfichier+".sh )?

【问题讨论】:

    标签: python linux bash shell


    【解决方案1】:

    看看 os 模块。

    我相信

    os.system("command_line_with_args") 
    

    可能是你要找的东西

    【讨论】:

    • 我的问题是我不知道如何编写考虑到我要执行的 .sh 文件的新路径的正确行代码。而且由于我是脚本世界的新手,所以很难理解我的问题的真正困难;(
    • @TAAMALLAHYoussef 看完link 我认为你要找的命令是'code' bash script-name-here.sh 'code'
    【解决方案2】:

    不确定您在 .sh 文件中写入的内容。

    但首先:

    1. 您是否使用 hashbang 开始了您的 .sh 文件? #!/bin/sh
    2. 您是否已将文件修改为可执行文件? chmod +x

    完成此操作后,您应该能够使用子流程模块并执行子流程手册中的示例: subprocess.call([path_to_script+'/script.sh'])

    如果我注意到新信息时,我可能需要更新此答案

    【讨论】:

    • 是的,我的 .sh 是可执行的,这里唯一的问题是我不知道如何执行 bash 文件,而不是执行 Bash test.sh,因为我想从我的 python 脚本中自动执行它并且最重要的是,当在终端中写入(bash test.sh)时,它仅在我与我的 .sh 位于同一目录时才有效....我找不到执行新创建的 .sh 文件和新创建的目录文件;(
    • 可能是shell的原因。您是否为系统提供了路径,所以它知道在哪里可以找到它。您可以在适当的环境变量或完整/相对路径中提供它。例如:/sbin/ls 但由于 sbin 在环境变量中找到,您也可以只写 ls
    【解决方案3】:

    大致相当于“手动”执行bash test.sh,当前目录是您发布的代码写入test.sh的目录:

        from subprocess import call
        call(['bash', 'test.sh'], cwd=basedirectory+nomdossier)
    

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 2016-04-22
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      相关资源
      最近更新 更多