Soy nueva en python.
Estoy trabajando en un script para pedirle a un usuario una ruta de directorio. Una vez provisto, me gustaría que el script enumere todos los archivos en el directorio, excluyendo cualquier subdirectorio.
Esto es lo que tengo hasta ahora. Parece que estoy atascado tratando de encontrar una manera de probar para ver si el elemento en cuestión es un directorio o un archivo. Por favor ayuda.
#! /usr/bin/python
import os
dir_f = raw_input(" Plese enter directory path where you would like to have \
the files renamed \n" )
#print dir_f
os.chdir(dir_f)
#prints items in directory one line at a time. TEST section
while os.listdir(dir_f):
if os.path.isdir(dir_f):
continue
else:
print "\n".join(os.listdir(dir_f))
# os.rename(src, dst) dont use this yet.
3 respuestas
Puede probar un código simple y se integrará a sus necesidades.
import os
folder = '/tmp/test'
for item in os.listdir('/tmp/test'):
if not os.path.isdir(os.path.join(folder,item)):
print item
Aquí está mi script con los cambios sugeridos por Lovato
#! /usr/bin/python
import os
dir_f = raw_input(" Plese enter directory path where you would like to have \
the files renamed \n" )
#print dir_f
os.chdir(dir_f)
for item in os.listdir(dir_f):
if not os.path.isdir(os.path.join(dir_f,item)):
print item
Prueba esto: creo que hace lo que quieres. Dos cambios importantes:
- Usé un bucle
for
en lugar dewhile
(lea sobre cómo funciona esto!)- (Un bucle
for
es, en general, la forma correcta de iterar a través de una lista o colección de objetos en Python).
- (Un bucle
- Su versión claramente perdió el
not
enif not os.path.isdir(...)
; su versión trataba los no directorios como directorios, y viceversa
Código ( editado para incluir mensajes explicativos sobre lo que está encontrando ):
import os, os.path
dir_f = raw_input(" Plese enter directory path where you would like to have \
the files renamed \n" )
#print dir_f
os.chdir(dir_f)
#prints items in directory one line at a time. TEST section
for item in os.listdir(dir_f):
if not os.path.isdir(os.path.join(dir_f,item)):
print "this is not a directory: ", item
else:
print "this is a subdirectory: ", item
print "... and it contains: ", ','.join(os.listdir(os.path.join(dir_f,item)))
# os.rename(src, dst) dont use this yet.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.