从main.py脚本执行子目录中的sh?

时间:2017-06-17 19:05:27

标签: python bash path

我正在尝试做以下事情。 我有一个带有这个目录树的python项目:

Project dir
  |
  |___main.py
  |___module
       |
       |__a.py
       |__a.sh

a.py有一个类,其中包含运行脚本的方法:

class A():
    def run():
        os.system('a.sh')

a.sh创建了一个文件:

touch a.txt

main.py实例化一个类A的对象并调用run()

a = A()
a.run()

调用main时,我收到错误消息script a.sh is not found。我明白为什么会发生这种情况,这是因为工作目录等于项目根路径,但我怎样才能使它工作,以便创建的文件最终在根路径中?

我想致电main.py并以此配置结束。

Project dir
  |
  |___a.txt
  |___main.py
  |___module
       |
       |__a.py
       |__a.sh

我可以将a.sh中的a.py来电替换为

os.system('module/a.sh')

它会起作用,但对我来说看起来并不干净。

1 个答案:

答案 0 :(得分:0)

a.py模块中的代码可以提取其所在目录的名称,并在os.system()调用中使用该名称。这就是我的意思:

档案a.py

import os

class A():
    def run(self):
        my_directory = os.path.dirname(__file__)
        script_path = os.path.join(my_directory, 'a.sh')
        os.system(script_path)

a = A()
a.run()