Сценарий Python не перечисляет файл в каталоге? - PullRequest
0 голосов
/ 11 мая 2018

У меня небольшой вопрос.

У меня есть следующая функция:

def getCommands():
    for file in os.listdir(com_dir):
        if file.endswith(com_ext):
            z = string.strip(file, '.gcom')
            print z

и в каталоге (определено com_dir) есть три файла.

a.gcom b.gcom c.gcom

при работе getCommands()

Выводится следующее:

a b

Файлы aи b показаны, однако, c не показан, все файлы находятся в каталоге и все используют одно и то же расширение файла: .gcom, что также com_ext переменная мудрость.

Есть ли у кого-нибудь подсказкипочему файл c не отображается?

Примечание: в выводе, похоже, есть пробел, где должно быть c, но я не уверен, имеет ли это какое-либо отношение к данной проблеме, иэто не просто случайное место в другом месте сценария.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Python 3 делает это намного лучше, чем Python 2:

from pathlib import Path

def getCommands(com_dir, com_ext):  # com_ext = "gcom"
    for f in Path(com_dir).glob("*." + com_ext):
        print ("{}".format(f.stem))

Но если вам действительно нужно использовать Python 2:

def getCommands(com_dir, com_ext):
    for file in os.listdir(com_dir):
        s = f.split('.' + com_ext)
        if len(s) > 1:
            print("{}".format(s[0]))
0 голосов
/ 11 мая 2018

strip удаляет все заданные символы с обоих концов вашей строки, в любом порядке, в котором они встречаются. Если ваша строка c.gcom, то strip('.gcom') удаляет все символы ., g, c, o и m с концов вашей струны, ничего не осталось.Он не останавливается, пока не попадет в символ, который не является ., g, c, o или m (или удалит все).

Если у вас есть строказаканчивающийся на .gcom, и вы просто хотите удалить это окончание, вы можете использовать:

z = file[:-5]

или, используя вашу com_ext переменную

com_ext = '.gcom'
...
if file.endswith(com_ext):
    z = file[:-len(com_ext)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...