Duda comando 'chdir' Python

Iniciado por JUSTDOIT!, 27 Enero 2012, 15:53 PM

0 Miembros y 2 Visitantes están viendo este tema.

JUSTDOIT!

Hola! Veréis tengo una duda con este script en Python, ahora os explico que es lo que quiero que haga:

Código (python) [Seleccionar]


# Crear carpetas en un directorio

import os

os.system('cls')
os.system('title' + ' ' + 'Carpetas')

nombre = str(raw_input('Introduzca el nombre de la carpeta: '))
destino = str(raw_input('Introduzca el nombre del directorio destino: '))

os.system('mkdir' + ' ' + nombre)
os.system('chdir' + ' ' + destino)



Lo que quiero es que el usuario seleccione un directorio y el nombre de la carpeta y le cree dicha carpeta en el directorio que el ha dicho, pero lo único que hace este script es crear la carpeta en el directorio en el que se encuentra.

Mi pregunta es como hacer para que la carpeta se cree en el directorio que el usuario quiere.

Saludos!
Somos lo que hacemos día a día; de modo que la excelencia no es un acto, sino un hábito.

Jirp96

Hola!
Creo que eso sucede porque creas el directorio antes de cambiar al directorio destino.

Aqui:
Código (python) [Seleccionar]

os.system('mkdir' + ' ' + nombre) #creas el directorio
os.system('chdir' + destino)      #cambias al directorio destino


Prueba a poner primero el chdir y luego el mkdir a ver que tal.
Saludos!
pd: Por cierto, lo que haces en ese script(crear y cambiar de directorios, se puede hacer con funciones del modulo os (os.chdir y os.mkdir). Aqui explican el modulo os(son los documentos oficiales de python)

JUSTDOIT!

Cita de: Jirp96 en 27 Enero 2012, 16:06 PM
Hola!
Creo que eso sucede porque creas el directorio antes de cambiar al directorio destino.

Aqui:
Código (python) [Seleccionar]

os.system('mkdir' + ' ' + nombre) #creas el directorio
os.system('chdir' + destino)      #cambias al directorio destino


Prueba a poner primero el chdir y luego el mkdir a ver que tal.
Saludos!
pd: Por cierto, lo que haces en ese script(crear y cambiar de directorios, se puede hacer con funciones del modulo os (os.chdir y os.mkdir). Aqui explican el modulo os(son los documentos oficiales de python)

Gracias pero nada, ya lo había intentado y nop jajaja

Supongo que tendré que cambiar las lineas de código como dices, pero aún así el fallo esta en:

Código (python) [Seleccionar]
os.system('chdir' + destino)      #cambias al directorio destino

Porque siempre me da error ese comando cuando intento cambiar de directorio por Python.

Saludos!  :)
Somos lo que hacemos día a día; de modo que la excelencia no es un acto, sino un hábito.

Jirp96

#3
Hola!
Creo que el problema es que os.system("chdir" + destino) (al menos a mi)no cambia de directorio.
Mira este ejemplo:
Código (python) [Seleccionar]

>>> import os
>>> os.system("chdir" + "C://Archivos de programa")
1
>>> os.listdir(os.getcwd())[:2] #con 2 archivos basta
['DLLs', 'Doc']
>>> os.getcwd()
'C:\\python26'
>>>
>>>
>>> os.chdir("C://Archivos de programa")
>>> os.listdir(os.getcwd())[:2] #con 2 archivos basta
['2K Games', 'Adobe']
>>> os.getcwd()
'C:\\Archivos de programa'
>>>


Prueba a cambiar las lineas que te comente antes(os.chdir y os.mkdir)
Saludos!

JUSTDOIT!

Cita de: Jirp96 en 27 Enero 2012, 16:38 PM

Creo que el problema es que os.system("chdir" + destino) (al menos a mi)no cambia de directorio.


Ahá! Ese es el problema jajaja creía que el comando
Código (python) [Seleccionar]
os.system('chdir') se podía utilizar para cambiar directorios, pero ya veo que no  :-\

Gracias por el codigo, lo leeré detenidamente y veré como puedo hacer el mini-programa :)

Gracias por la ayuda ;)
Somos lo que hacemos día a día; de modo que la excelencia no es un acto, sino un hábito.

Jirp96

Hola!
Sin embargo usandolo desde el cmd cambia de directorios sin problemas =|
Espero que te funcione lo de usar el el chdir y mkdir del modulo os
Saludos!

JUSTDOIT!

Cita de: Jirp96 en 28 Enero 2012, 00:42 AM
Hola!
Sin embargo usandolo desde el cmd cambia de directorios sin problemas =|
Espero que te funcione lo de usar el el chdir y mkdir del modulo os
Saludos!

Quizás porque ejecuto mal el comando (lo más seguro.. jajaja) de todos modos en la página que me habías pasado venía algo sobre su sintaxis así que le tendré que echar un ojo (que remedio..  :P)

Un saludo!
Somos lo que hacemos día a día; de modo que la excelencia no es un acto, sino un hábito.

criskapunk

Buenas,

Para que el comando chdir cambie de directorio, le tenés que pasar como parámetro la carpeta a la que querés que cambie, sino, devuelve el nombre del directorio actual. Algo así:

Código (dos) [Seleccionar]
chdir C:\

Anduve probando, y para que te cree la carpeta en una ruta determinada, no hace falta usar el comando chdir. Con mkdir escribiendo la ruta completa hace lo mismo:

Código (python) [Seleccionar]
import os

carpeta = raw_input("Nombre carpeta: ")
directorio = raw_input("Nombre directorio: ")

os.system("mkdir" + " " + directorio + carpeta)


Siempre y cuando en la variable directorio se escriba toda la ruta, por ejemplo, C:\WINDOWS\.

Sin embargo, si los nombres de directorios en la ruta contienen varias palabras (Por ejemplo, en C:\Archivos de programa\), tenés que encerrar toda la ruta entre comillas. Así:

Código (python) [Seleccionar]
os.system("mkdir" + " " + "\"" + directorio + carpeta + "\"")

Notas:
- En vez de poner chdir y mkdir podrías usar cd y mk, hacen lo mismo.
- No es necesario poner la función str() con el raw_input(), ya que esta última convierte todo lo que se le pasa como argumento a string automáticamente.

Un saludo.