Выставить фильтр на выборку файлов в имени которых не более одной точки
for file in glob.glob(patch+'*.*'):
Таким образом, выбираем из папки все файлы в имени которых есть точка. Проблема в том, что может захватить тот файл который в процессе загрузки.
К примеру, закидывают файл размером в 10 гб. Система дает ему временное имя
news.mp4.filepart
То есть данный файл, пайтон тоже прихватит. Собственно вопрос, как выставить фильтр на то, что в имени должна присутствовать точка и в количестве 1шт.
Ответы (1 шт):
1)Как вариант - использовать count для подсчета количества вхождений подстроки в строке, а дальше любое условие на свой вкус..
def valid_name(filename):
if filename.count('.') == 1:
print("True")
else:
print("False")
file_name = "news.mp4.filepart"
file_name2= "news.mp4filepart"
valid_name(file_name) # False
valid_name(file_name2) # True
2)Если все файлы переименовываются пока закачиваются и получают расширение .filepart, тогда всё просто..
def valid_name(filename):
if filename.endswith('.filepart'):
print("False")
else:
print("True")
file_name = "news.mp4.filepart"
file_name2= "news.mp4"
valid_name(file_name) #False
valid_name(file_name2) #True
3)Вообще, надо поэкспериментировать, и попытаться открыть файл который ещё загружаются! По идеи он должен быть ещё заблокирован и выбьет ошибку. Обрабатываем исключение и не добавляем его в список файлов?♀️
4)Как вариант можно пройтись по всем файлам в каталоге дважды и сравнить значения при первом проходе со вторым. Те что в размере не увеличились те в список и добавляем.