How to run file in subfolder

Question:

import os

root_dir = "D:extention"
for folder, subfolders, files in os.walk(root_dir):
    if folder != root_dir:
        for f in files:
            if f.endswith(".py"):
                print("File Name: ", f)
                print(f"Path: ", os.path.join(folder, f))
                dir_path=(f"Path: ", os.path.join(folder, f))

with this code i can find py file in subfolder but cant run the file

I try to use os.system but get error.

I have very little knowledge of python can anyone help me.

Asked By: Sammy Jakson

||

Answers:

This will execute the .py file specified by dir_path:

import subprocess

subprocess.run(["python", dir_path])

If you need to capture the output, you could use this:

import subprocess

process = subprocess.Popen(["python", dir_path], stdout=subprocess.PIPE)
output, error = process.communicate()
print(output)

You only need to integrate one of the alternatives to your code, like this:

import os
import subprocess

root_dir = "D:extention"
for folder, subfolders, files in os.walk(root_dir):
    if folder != root_dir:
        for f in files:
            if f.endswith(".py"):
                print("File Name: ", f)
                dir_path = os.path.join(folder, f)
                print("Path: ", dir_path)
                subprocess.run(["python", dir_path])

Answered By: Roniel López

Your dir_path is a tuple not a string. Leave out the round brackets.

import os

root_dir = "D:extention"
for folder, subfolders, files in os.walk(root_dir):
    if folder != root_dir:
        for f in files:
            if f.endswith(".py"):
                print(f"File Name: {f}")
                dir_path=os.path.join(folder, f)
                print(f"Path: {dir_path}")
                os.system(dir_path)
Answered By: phibel
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.