Mi compañero de trabajo está teniendo problemas con una instalación de Python. Cuando se ejecuta el código de abajo, de 'C:\my\folder\', 'C:\' se devuelve en lugar de en el directorio de trabajo actual. Cuando yo o cualquier otra persona ejecute la secuencia de comandos en nuestros sistemas, obtenemos 'C:\my\folder\'.

Estamos asumiendo que algunas mundial de la configuración debe ser la causa del problema, por lo que he tenido a la persona desinstalar Python, eliminar el local Python2.7 carpeta, limpiar el registro y volver a instalar el Python, pero aún no funciona.

NOTA: Tenemos un gran número de secuencias de comandos heredados, por lo que la revisión de todos ellos para uso subproceso es poco práctico. 🙁

Alguna idea?

Entorno: Windows XP, Python 2.7

import os

#
#  This test script demonstrates issue on the users computer when python invokes
#  a subshell via the standard os.system() call.
#

print "This is what python thinks the current working directory is..."
print os.getcwd()
print
print

print "but when i execute a command *from* python, this is what i get for the current working directory"
os.system('echo %cd%')

raw_input()
  • ¿Cuál es tu CAMINO?
  • Podría decirse que se debe utilizar únicamente el directorio de trabajo actual si el script funciona en los archivos en él. I. e. no se basan en el directorio de trabajo actual era el lugar donde se encuentra el programa o cualquier otro lugar predeterminado.
  • Ruta de acceso: c:\Python27\Lib\site-packages\PyQt4;c:\python27;c:\python27\scripts…y un montón de MS Visual Studio cosas no relacionadas con Python
InformationsquelleAutor Aquadisco | 2013-08-05

2 Comentarios

  1. 6

    también se podría tratar de algo como esto

    os.chdir("C:\to\my\folder")
    print os.system("echo %CD%")
    raw_input()

    además para obtener el directorio de trabajo actual yo uso un enfoque diferente

    cur_dir = os.path.abspath(".")
    • la salida del primer bloque de código es: ‘C:\’
    • valor de ‘cur_dir’ en el segundo bloque de código es ‘C:\’
  2. 2

    os.getcwd() no está garantizado para obtener la ubicación de la secuencia de comandos cuando se le llama. Su compañero de trabajo podría estar llamando a la secuencia de comandos de una manera diferente o de su equipo (por alguna razón) que maneja el directorio de trabajo actual de forma diferente.

    Para obtener la secuencia real de la ubicación debe utilizar la siguiente:

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

    Como un ejemplo escribí getcwd y la línea anterior en el mismo script y ejecutó desde C:\.

    Resultados:

    C:\>python C:\Users\pies\Desktop\test.py
    C:\Users\pies\Desktop
    C:\

    Depende de lo que su verdadero propósito de esta secuencia de comandos es, si realmente necesita el directorio de trabajo actual, o simplemente el actual directorio de secuencias de comandos. Como con la salvedad de que esta llamada devolverá un directorio diferente si usted llama a una secuencia de comandos de secuencia de comandos que utiliza esta llamada.

    • Las secuencias de comandos utilizar las llamadas al sistema como se muestra arriba para invocar otras aplicaciones (por ejemplo, 7za). No es práctico para reescribir nuestra biblioteca de secuencias de comandos, ya que es trabajo para todos los demás. Nos lleva a creer que es un problema con el usuario en lugar de la secuencia de comandos.
    • Sí, esto parece como un asunto de ambiente. Yo no podía más sin tener el equipo, pero de la buena suerte! Si usted averiguar hágamelo saber, suena interesante.

Dejar respuesta

Please enter your comment!
Please enter your name here