Ejemplo:

Tengo mi archivo principal, main.py con este código:

import os
os.popen("start folder/subfile.py")

Luego tengo mi otro archivo, subfile.py con este código:

file = open("test.txt", "w")
file.close()

Quiero que mi subfile.py cree el archivo test.txt en su propia carpeta, pero lo crea en la carpeta main.py.

Entonces mi pregunta es, ¿cómo hago para que el subfile.py se ejecute desde su propia carpeta a pesar de que se inició desde main.py

Carpeta main.py: C: / users / user / Desktop

Carpeta subfile.py: C: / users / user / Desktop / folder

-1
Lojas 29 oct. 2017 a las 01:12

3 respuestas

La mejor respuesta

En subfile.py, cambie el directorio de trabajo ({{X1} }) al directorio que contiene el archivo subfile.py :

import os
os.chdir(os.path.dirname(__file__))
1
Leistungsabfall 28 oct. 2017 a las 22:22

Pruebe esto :

import os
import inspect

your_current_folder_path = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
your_current_file_path = os.path.join(your_current_folder_path, "test.txt")

print(your_current_folder_path)
print(your_current_file_path)


with open(your_current_file_path, "w") as make_file:
    make_file.write("")

print("Done.")

Otra forma: puede cambiar su directorio de trabajo mediante la función os.chdir ("your_folder_directory").

os.chdir(r"C:/users/user/Desktop/folder")
0
DRPK 28 oct. 2017 a las 22:23

En su lugar, puede usar el subproceso que tiene eso incorporado:

subprocess.Popen(sys.executable + ' subfile.py', cwd=os.path.dirname(__file__) + '/folder')
1
gommb 28 oct. 2017 a las 23:15