¿Cómo le digo una secuencia de comandos de Python (cygwin) para trabajar en los directorios actuales (o relativa)?

StackOverflow https://stackoverflow.com/questions/1117414

Pregunta

Tengo un montón de directorios con archivos de texto escribiendo (g) vim, y he escrito un puñado de empresas de servicios públicos que encuentro útil en Python. Empiezo las empresas de servicios públicos con una línea pitón libra-bang / usr / bin / env con el fin de utilizar el pitón que está instalado bajo Cygwin. Me gustaría escribir comandos como este:

% cd ~ / SomeBook

% que pythonUtil

/ usr / local / bin / pythonUtil

% pythonUtil ./infile.txt ./outfile.txt

(o% pythonUtil someRelPath / infile.txt somePossiblyDifferentRelPath / outfile.txt)

pythonUtil: infile.txt Encontrado; Escribiendo outfile.txt; Hecho (o algo así, en todo caso)

Sin embargo, mis programas pythonUtil me dicen que no pueden encontrar infile.txt. Si copio la utilidad en el directorio de trabajo actual, todo está bien, pero luego tengo copias de mis utilidades que cubrían el paisaje. ¿Qué debo hacer?

Sin embargo, otro de edición: --- Para resumir lo que quería era os.path.abspath ( 'nombre'). Que devuelve la ruta absoluta como una cadena, y luego toda ambigüedad se ha eliminado.

PERO: SI el Python se utiliza es la instalada bajo cygwin, entonces la ruta absoluta será una ruta CYGWIN-relativo, como /home/someUser/someDir/someFile.txt. Sin embargo si el pitón se ha instalado en Windows (y aquí está siendo llamada desde una línea de comandos de terminal cygwin), entonces la ruta absoluta será la ruta completa de Windows, de 'unidad' para abajo, como D: \ cygwin \ home \ unUsuario \ somedir \ Unarchivo.txt.

Moral: No espere que el cygwin Python para generar una ruta absoluta de Windows completa de un archivo no cuelga de /; está más allá de su horizonte de sucesos. Sin embargo, se puede llegar a cualquier archivo en un sistema de WinXP con el cygwin-pitón si especifica la ruta del archivo usando el "/ cygdrive / LETRAUNIDAD" convención leadin.

Observación: No utilice '\' s para los separadores en el camino WinXP en la línea de comandos cygwin; utilizar '/' s y confiar en la serpiente. Ni idea de por qué, pero algunos separadores pueden ser dejados y el camino se pueden modificar para incluir niveles adicionales, tales como "Documents and Settings \ unUsuario" y otras tonterías de Windows.

Gracias a los respondedores para mí empujando en la dirección correcta.

¿Fue útil?

Solución

Mira os.getcwd:

Editar: Para las rutas relativas, por favor, eche un vistazo al módulo os.path:

en particular, os.path.join y os.path.normpath. Por ejemplo:

import os
print os.path.normpath(os.path.join(os.getcwd(), '../AnotherBook/Chap2.txt'))

Otros consejos

¿Qué ocurre cuando se escribe "LS"? Es lo que ves "infile.txt" que aparece allí?

os.chdir(my_dir)

o

os.chdir(os.getcwd())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top