Iter не показывает каждый файл в каталоге - PullRequest
0 голосов
/ 14 июля 2020

Это мой первый пост в Python. В настоящее время я обучаю себя Python, а текущий раздел - итераторы.

Я на ма c работаю с каталиной, используя Python 3.8.3

Моя цель - запустите команду каталога для всех файлов Python (* .py) в текущем каталоге. Я написал этот код:

import os
files = os.popen('ls *.py')
fileit = iter(files)
for item in files:
    print(next(fileit), end='')

Он печатает список всех остальных файлов, а не каждого python файла. Что я делаю не так?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 14 июля 2020

Разобрался, уйдя и вернувшись.

Строка печати должна выглядеть так:

print(fileit, end='')

, помещая ее в следующее, перемещая файл на одно место и затем печатая он, по сути, выводит на печать все остальные имена файлов.

Спасибо !!

0 голосов
/ 14 июля 2020

Вам не нужно использовать оба итератора и a для l oop. В этой ситуации a for l oop будет иметь наибольший смысл, но если вы специально пытаетесь узнать об итераторах, я бы порекомендовал время l oop.

import os
files = os.popen('ls *.py')
fileit = iter(files)
while True:
    try:
        print(next(fileit), end='')
    except StopIteration:
        break
0 голосов
/ 14 июля 2020
import glob
for x in glob.glob('*.py', recursive=True):
    print(x)

Используйте модуль glob для получения всех python файлов

Изменение кода

In [91]: import os
    ...: files = os.popen('ls *.py')
    ...: for item in files:
    ...:     print(item)

Вывод:

a.py
main.py
test_main.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...