ver una recorrer manejo listar directorios directorio con carpetas carpeta archivos actual abrir python directory

python - una - Buscar directorio actual y directorio de archivos



recorrer directorios en python (15)

En Python, ¿qué comandos puedo usar para encontrar:

  1. el directorio actual (donde estaba en el terminal cuando ejecuté el script de Python), y
  2. ¿Dónde está el archivo que estoy ejecutando?

1.Para obtener la ruta completa del directorio actual

>>import os >>print os.getcwd()

o / p: "C: / Users / admin / myfolder"

1. Para obtener el nombre de la carpeta del directorio actual solo

>>import os >>str1=os.getcwd() >>str2=str1.split(''//') >>n=len(str2) >>print str2[n-1]

o / p: "mi carpeta"



Para la pregunta 1, use os.getcwd() # get working dir y os.chdir(r''D:/Steam/steamapps/common'') # set working dir

Recomiendo usar sys.argv[0] para la pregunta 2 porque sys.argv es inmutable y, por lo tanto, siempre devuelve el archivo actual (ruta del objeto del módulo) y no está afectado por os.chdir() . También puedes hacer así:

import os this_py_file = os.path.realpath(__file__) # vvv Below comes your code vvv #

pero ese fragmento de sys.argv[0] y sys.argv[0] no funcionarán o funcionarán de forma extraña cuando lo compile PyInstaller porque las propiedades mágicas no están establecidas en el nivel sys.argv[0] y sys.argv[0] es la forma en que se llamó a su exe (significa que se ve afectado por el directorio de trabajo).


Para obtener la ruta completa al directorio en el que se encuentra un archivo Python, escriba esto en ese archivo:

import os dir_path = os.path.dirname(os.path.realpath(__file__))

(Tenga en cuenta que el encantamiento anterior no funcionará si ya ha usado os.chdir() para cambiar su directorio de trabajo actual, ya que el valor de la constante __file__ es relativo al directorio de trabajo actual y no es cambiado por un sistema os.chdir() llamada.

Para obtener el uso actual del directorio de trabajo.

import os cwd = os.getcwd()

Referencias de documentación para los módulos, constantes y funciones utilizadas anteriormente:

  • Los módulos os y os.path .
  • La constante __file__
  • os.path.realpath(path) (devuelve "la ruta canónica del nombre de archivo especificado, eliminando cualquier enlace simbólico encontrado en la ruta" )
  • os.path.dirname(path) (devuelve "el nombre de directorio de la ruta de acceso" )
  • os.getcwd() (devuelve "una cadena que representa el directorio de trabajo actual" )
  • os.chdir(path) ( "cambiar el directorio de trabajo actual a la path " )

Para obtener la ruta completa del directorio actual:

os.path.realpath (''.'')


Para obtener su directorio de trabajo en python. Puedes usar el siguiente código:

importar os cwd = os.getcwd () #para obtener el directorio de trabajo


Para ver el tipo de directorio de trabajo actual siguiente script:

import os current_working_directory = os.getcwd()


Pathlib se puede usar de esta manera para obtener el directorio que contiene el script actual:

import pathlib filepath = pathlib.Path(__file__).resolve().parent


Puede encontrar esto útil como referencia:

import os print("Path at terminal when executing this file") print(os.getcwd() + "/n") print("This file path, relative to os.getcwd()") print(__file__ + "/n") print("This file full path (following symlinks)") full_path = os.path.realpath(__file__) print(full_path + "/n") print("This file directory and name") path, filename = os.path.split(full_path) print(path + '' --> '' + filename + "/n") print("This file directory only") print(os.path.dirname(full_path))


Si está buscando la ubicación del script ejecutado actualmente, puede usar sys.argv[0] para obtener la ruta completa.


Si está intentando encontrar el directorio actual del archivo en el que se encuentra actualmente:

De manera agnóstica del sistema operativo:

dirname, filename = os.path.split(os.path.abspath(__file__))


Si está utilizando Python 3.4, existe un nuevo módulo de pathlib nivel pathlib que le permite llamar a pathlib.Path.cwd() para obtener un objeto de Path que represente su directorio de trabajo actual, junto con muchas otras características nuevas.

Más información sobre esta nueva API se puede encontrar here .


Un poco tarde para la fiesta, pero creo que la forma más breve de encontrar el nombre de su contexto de ejecución actual sería

current_folder_path, current_folder_name = os.path.split(os.getcwd())


pathlib módulo pathlib , introduced en Python 3.4 ( PEP 428 - El módulo pathlib - rutas del sistema de archivos orientado a objetos ), hace que la experiencia relacionada con la ruta sea mucho mejor.

$ pwd /home/skovorodkin/stack $ tree . └── scripts ├── 1.py └── 2.py

Para obtener el directorio de trabajo actual use Path.cwd() :

from pathlib import Path print(Path.cwd()) # /home/skovorodkin/stack

Para obtener una ruta de acceso absoluta a su archivo de script, utilice el método Path.resolve() :

print(Path(__file__).resolve()) # /home/skovorodkin/stack/scripts/1.py

Y para obtener la ruta de un directorio donde se encuentra su script, acceda a .parent (se recomienda llamar a .resolve() antes de .parent ):

print(Path(__file__).resolve().parent) # /home/skovorodkin/stack/scripts

Recuerde que __file__ no es confiable en algunas situaciones: ¿Cómo obtengo la ruta del archivo ejecutado actual en Python? .

Tenga en cuenta que Path.cwd() , Path.resolve() y otros métodos de ruta devuelven objetos de ruta ( PosixPath en mi caso), no cadenas. En Python 3.4 y 3.5 eso causó cierto dolor, porque la función incorporada open solo podía funcionar con objetos de cadena o bytes, y no era compatible con objetos de Path , por lo que tenía que convertir objetos de Path en cadenas o usar el método Path.open() . pero la última opción requería que cambies el código antiguo:

$ cat scripts/2.py from pathlib import Path p = Path(__file__).resolve() with p.open() as f: pass with open(str(p)) as f: pass with open(p) as f: pass print(''OK'') $ python3.5 scripts/2.py Traceback (most recent call last): File "scripts/2.py", line 11, in <module> with open(p) as f: TypeError: invalid file: PosixPath(''/home/skovorodkin/stack/scripts/2.py'')

Como puede ver, open(p) no funciona con Python 3.5.

PEP 519: agregar un protocolo de ruta de acceso al sistema de archivos , implementado en Python 3.6, agrega soporte de objetos PathLike para open función, por lo que ahora puede pasar la Path objetos para open función directamente:

$ python3.6 scripts/2.py OK


Respuesta al # 1:

Si quieres el directorio actual, haz esto:

import os os.getcwd()

Si desea cualquier nombre de carpeta y tiene la ruta de acceso a esa carpeta, haga lo siguiente:

def get_folder_name(folder): '''''' Returns the folder name, given a full folder path '''''' return folder.split(os.sep)[-1]

Respuesta al # 2:

import os print os.path.abspath(__file__)