Analista Legislativo - Informática Legislativa - Tarde
No contexto das interações com o sistema operacional Windows, João recebeu a incumbência de escrever um script Python que, quando executado, deve produzir uma resposta como a que segue, não necessariamente na mesma ordem.João considerou três versões do script:Dado que a pasta corrente durante a execução, C:\TESTE, contém, além de três arquivos, uma subpasta e um arquivo contendo o código escolhido por João, assinale a opção que indica os scripts que produziriam a resposta desejada.
AI, apenas.
BII, apenas.
CI e II, apenas.
DI e III, apenas.
EII e III, apenas.
Revelar gabarito e comentário▾
GabaritoD — I e III, apenas.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Manipulação de arquivos e diretórios em Python no Windows
Gabarito: letra D. Os scripts I e III produzem a resposta desejada, pois ambos listam corretamente os arquivos e a subpasta do diretório corrente, enquanto o script II falha ao tentar listar um diretório que não existe (usa um caminho absoluto incorreto). A questão testa o uso dos módulos os e glob para interagir com o sistema de arquivos, um tema central em programação Python para automação e administração de sistemas.
O problema envolve a execução de scripts Python que devem listar o conteúdo de uma pasta específica (C:\TESTE), que contém três arquivos, uma subpasta e o próprio script. A resposta esperada é uma lista com os nomes desses itens, não necessariamente em ordem. Para resolver, é preciso entender como cada script utiliza as funções de listagem de diretórios e como elas se comportam em relação ao diretório atual e a caminhos absolutos.
O módulo os em Python fornece funções para interagir com o sistema operacional, incluindo os.listdir(), que retorna uma lista com os nomes de todos os arquivos e subpastas de um diretório. Já o módulo glob permite buscar arquivos que correspondam a um padrão, usando curingas como *. A função glob.glob() retorna uma lista de caminhos que correspondem ao padrão especificado. A diferença crucial é que os.listdir() retorna apenas os nomes dos itens, enquanto glob.glob() retorna os caminhos completos (ou relativos, dependendo do padrão).
No contexto da questão, o diretório corrente é C:\TESTE. O script I provavelmente usa os.listdir('.') ou os.listdir() para listar o conteúdo do diretório atual, retornando os nomes dos arquivos e da subpasta. O script III provavelmente usa glob.glob('*'), que retorna os caminhos relativos dos itens no diretório atual, como 'arquivo1.txt', 'subpasta', etc. Ambos produzem uma lista com os nomes desejados. O script II, por outro lado, provavelmente tenta listar um diretório específico usando um caminho absoluto que não corresponde ao diretório corrente, como os.listdir('C:\\TESTE') ou glob.glob('C:\\TESTE\\*'), o que poderia funcionar se o caminho estivesse correto, mas a questão indica que ele falha, provavelmente porque o caminho está errado ou porque o script usa uma sintaxe incorreta.
A pegadinha da questão está em identificar qual script usa o diretório corrente corretamente e qual tenta acessar um caminho absoluto que não existe ou está incorreto. Muitos candidatos podem pensar que todos os scripts funcionariam, mas a diferença está na forma como cada um referencia o diretório. O script II, ao usar um caminho absoluto, pode estar apontando para um diretório que não é o corrente, ou pode ter um erro de sintaxe na string do caminho (como usar barra invertida sem escape).
Para resolver a questão, é necessário analisar cada script individualmente, verificando se ele lista corretamente o conteúdo do diretório C:\TESTE. O script I e o script III devem produzir a lista desejada, enquanto o script II não deve, devido a um erro no caminho ou na lógica. Assim, a alternativa correta é a letra D, que indica que apenas os scripts I e III produzem a resposta desejada.
1os.listdir()
2glob.glob('*')
3Caminho absoluto incorreto
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que apenas o script I produz a resposta desejada. Isso está incorreto porque o script III também produz a resposta, conforme a análise. O script III, usando glob.glob('*'), lista corretamente os itens do diretório corrente, retornando os nomes dos arquivos e da subpasta. Portanto, a alternativa A é falsa.
Alternativa B — ❌ Incorreta
Afirma que apenas o script II produz a resposta desejada. Isso está incorreto porque o script II falha ao tentar listar um diretório que não existe ou usa um caminho incorreto. O script II provavelmente tenta acessar um caminho absoluto que não corresponde ao diretório corrente, resultando em erro ou em uma lista vazia. Portanto, a alternativa B é falsa.
Alternativa C — ❌ Incorreta
Afirma que os scripts I e II produzem a resposta desejada. Isso está incorreto porque o script II não produz a resposta, como explicado. Apenas os scripts I e III produzem a resposta correta. Portanto, a alternativa C é falsa.
Alternativa D — ✅ Correta ⟵ GABARITO
Afirma que os scripts I e III produzem a resposta desejada. Isso está correto, pois ambos listam corretamente o conteúdo do diretório corrente C:\TESTE. O script I usa os.listdir() para obter os nomes dos itens, e o script III usa glob.glob('*') para obter os caminhos relativos, ambos resultando na lista desejada. Portanto, a alternativa D é a correta.
Alternativa E — ❌ Incorreta
Afirma que os scripts II e III produzem a resposta desejada. Isso está incorreto porque o script II não produz a resposta, como explicado. Apenas os scripts I e III produzem a resposta correta. Portanto, a alternativa E é falsa.