ISD
ISD

Reputation: 1012

How to execute python file from other directory?

I've got this structure:

│
├ main.py
├ dir
|  ├─ data.txt
|  └─ other.py

Contents from other.py:

print(open('data.txt', 'utf-8').read())

I run main.py. It must start dir/other.py.
But other.py for works needs data.txt. Is there a way to start other.py from main.py, not editing other.py?

Note
User must be able to start other.py manualy without any errors

Upvotes: 0

Views: 80

Answers (2)

Tamas
Tamas

Reputation: 61

For this purpose you can use the import keyword. All you have to do is create an __init__.py script under the dir directory which will define the directory as a library. Then you can just use import others in the main script.

It is recommended to modify the others.py script with the below snippet

if __name__ == '__main__':
    // do stuff

otherwise it will execute the library each time you import it

update

It is far more simple. You just have to change directory with the os.chdir("./dir") call. After that you can run a simple import and the script will be executed.

./dir/other.py:
print("Module starts")
print(open('data', 'r').read())
print("Module ends")

./main.py
print("Main start")
import os
os.chdir("./dir")
from others import other
print("Main end" )

Upvotes: 1

Palash Jain
Palash Jain

Reputation: 38

You can import other in main file like from dir.other import *

Upvotes: 0

Related Questions