从python执行.sh文件,指示绝对路径

时间:2016-12-11 19:35:39

标签: python linux bash shell

我是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)

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

3 个答案:

答案 0 :(得分:0)

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

但首先:

  1. 您是否使用hashbang启动了.sh文件? #!/ bin / sh的
  2. 您是否已将文件修改为可执行文件? chmod + x
  3. 完成此操作后,您应该能够使用子进程模块并执行类似子进程手册中的示例: subprocess.call([path_to_script + '/ script.sh'])

    我可能需要更新此答案,如果&当有新的信息引起我的注意时

答案 1 :(得分:0)

看看os模块。

我相信

os.system("command_line_with_args") 

可能就是你要找的东西

答案 2 :(得分:0)

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

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