No Python, eu quero apenas listar todos os arquivos no diretório atual SOMENTE. Não quero arquivos listados em nenhum subdiretório ou pai.
Parece haver soluções semelhantes por aí, mas elas não parecem funcionar para mim. Aqui está o meu trecho de código:
import os
for subdir, dirs, files in os.walk('./'):
for file in files:
do some stuff
print file
Vamos supor que eu tenha 2 arquivos, holygrail.py e Tim, dentro do meu diretório atual. Também tenho uma pasta e ela contém dois arquivos - vamos chamá-los de Arthur e Lancelot - dentro dela. Quando executo o script, é isso que recebo:
holygrail.py
Tim
Arthur
Lancelot
Estou feliz com holygrail.py e Tim. Mas os dois arquivos, Arthur e Lancelot, não quero listados.
[os.path.join(path_base,f) for f in os.listdir(path_base) if os.path.isfile(os.path.join(path_base,f))]
files = [f for f in os.listdir("/somedir") if os.path.isfile(os.path.join("/somedir", f))]'
Você pode usar
os.listdir
para esse fim. Se você deseja apenas arquivos e não diretórios , pode filtrar os resultados usandoos.path.isfile
.exemplo:
ou
fonte
fonte
Você pode usar
os.scandir()
. A nova função no stdlib inicia no Python 3.5.Mais rápido que
os.listdir()
.os.walk()
implementaos.scandir()
.fonte
isso pode ser feito com os.walk ()
python 3.5.2 testado;
remova a linha dirs.clear () e os arquivos nas subpastas serão incluídos novamente.
atualização com referências ;
o os.walk documentado aqui e fala sobre a lista tripla sendo criada e os efeitos de cima para baixo .
.clear () documentado aqui para esvaziar uma lista
portanto, limpando a lista relevante do os.walk, você pode efetuar o resultado conforme suas necessidades.
fonte
Você pode melhorar esse código com o
del dirs[:]
qual será semelhante a seguir.Ou melhor ainda, se você pudesse apontar o os.walk com o diretório de trabalho atual.
fonte
em vez de
os.walk
, basta usaros.listdir
fonte
Você pode usar o módulo pathlib.
fonte