2016-11-05 1 views
0

я искал пути к перебирают файлы в каталоге с питоном, и я нашел этот вопрос:Loop через двоичные файлы, которые не имеют никакого расширения

Loop through all CSV files in a folder

Дела в том, что файлы, у меня есть бинарные файлов, без расширения файла в конце. Я хочу, чтобы моя программа выполняла итерацию по всем файлам, у которых нет расширения.

В любом случае, примените это с помощью подстановочных знаков? (Или любым другим способом?)

ответ

0

Я бы предложил использовать os.listdir(), а затем проверить, имеет ли имя файла расширение (проверьте, есть ли точка в имени файла). После того, как вы получите все имена файлов без точек (то есть без расширения), просто убедитесь, что имя файла не является именем каталога, и все.

1

Похоже, что вы заинтересованы в том,

[f for f in next(os.walk(folder))[2] if '.' not in f] 
+0

Он хорошо выглядит. Вы можете добавить 'import os' и записать его внутри метода, чтобы сделать его готовым к работе. –

1

Вы можете использовать os.path.splitext, чтобы проверить, если файл имеет расширение или нет.

Смотрите этот пример:

import os 

os.path.splitext("foo.ext") 
=> ('foo', '.ext') 

os.path.splitext("foo") 
=> ('foo', '') 

Таким образом, вы можете сделать это:

import os 

path = "path/to/files" 
dirs = os.listdir(path) 

for path in dirs: 
    if not os.path.splitext(path)[1]: 
     print(path) 

Но, остерегайтесь "скрытых" файлов, название которых начинается с точки, то есть .:».bashrc ».

Вы также можете проверить существование точки в имени файла:

for path in dirs: 
    if "." not in path: 
     print(path) 
+0

Спасибо за ваш ответ, он работал точно так, как я хотел. – philippos

0

Вы можете использовать glob module и отфильтровать любые файлы с расширениями:

import glob 

for filename in (filename for filename in glob.iglob('*') if '.' not in filename): 
    print(filename)