我正在尝试做以下事情。 我有一个带有这个目录树的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')
它会起作用,但对我来说看起来并不干净。
答案 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()