How can I execute a Python script file with another script in Python 3?

89    Asked by DavidEdmunds in Python , Asked on Jul 22, 2024

 I am currently engaged as a software developer and I am currently working on a particular project that can implement a series of Python scripts that would process data files. My project was initially developed by using Python 2, where I frequently used the execfile function to run the other script. Now I am trying to upgrade my particular project to Python 3. 

In one of my main scripts, I have the following code which can work perfectly in Python 2:

Execfile(‘script_to_run.py’)

Why is this particular line of code not working in Python 3? How can I achieve the same functionality in Python 3? 

Answered by Claudine Tippins

In the context of Python programming language, in Python 2 the execfile function would allow the implementation of a Python script file within the current interpreter session. However, Python 3 would remove the execfile due to changes in the implementation model and improved handling of the file operations and namespaces.


To replicate functionality in Python 3, you would need to:

Open the file which contains the Python-based script.

Read the content of the particular file.

Now implement the read content by using the exec function, which can implement dynamically created Python-based code.

Python 2 code using execfile
# script_to_run.py
Print(“This script is executed.”)
# main_script.py
Execfile(‘script_to_run.py’)
Python 3 code using exec:
Script to be implemented (script_to_run.ply)
# script_to_run.py
Print(“This script is executed.”)
Main script (main_script.py)
# main_script.py
# Function to execute another script
Def exec_script(file_path):
    Try:
        # Open the script file in read mode
        With open(file_path, ‘r’) as file:
            # Read the content of the script file
            Script_content = file.read()
            # Optionally, define a global and local dictionary for exec
            Global_dict = globals()
            Local_dict = locals()
            # Execute the content of the script file
            Exec(script_content, global_dict, local_dict)
            Print(f”Successfully executed {file_path}”)
    Except FileNotFoundError:
        Print(f”Error: The file {file_path} was not found.”)
    Except Exception as e:
        Print(f”Error while executing {file_path}: {e}”)
# Path to the script to be executed
Script_path = ‘script_to_run.py’
# Execute the script
Exec_script(script_path)
# Additional code in main_script.py
Print(“This is main_script.py”)

This code structure would ensure that the script _to_run.py file will implemented within the main_script.py script, which would replicate the functionality of execfile in the Python 3 environment.



Your Answer

Interviews

Parent Categories