Ubuntu One Folder Sync Filter - PullRequest
       2

Ubuntu One Folder Sync Filter

4 голосов
/ 09 июня 2010

Я пытаюсь изменить сценарии Python для синхронизации Ubuntu One File, чтобы они не включали такие вещи, как .iso.

Я нашел этот файл: /usr/share/pyshared/ubuntuone/u1sync/constants.py

Внутри этот кусок кода:

import re

# the name of the directory u1sync uses to keep metadata about a mirror
METADATA_DIR_NAME = u".ubuntuone-sync"

# filenames to ignore
SPECIAL_FILE_RE = re.compile(".*\\.("
                             "(u1)?partial|part|"
                             "(u1)?conflict(\\.[0-9]+)?)$")

Как я могу отредактировать этот последний раздел (регулярное выражение?) И заставить его игнорировать файлы .iso ??? Я вполне уверен, что это место, чтобы поставить его!

Уверен, это стандартное действие Python:)

Любая помощь будет оценена.

Спасибо, любезно.

Andy

Ответы [ 4 ]

3 голосов
/ 09 июня 2010

Документация regex для python будет тем местом, где можно найти это.

Для isos вы можете просто добавить "|.*\.iso$" к последней строке.

2 голосов
/ 15 июня 2010

В UbuntuOne действительно должен быть файл .ignore или что-то в этом роде ... Я хочу игнорировать множество вещей ... .pyc, .blend1 только для начала.

ОБНОВЛЕНИЕ: оно есть - посмотритев:

https://answers.launchpad.net/ubuntuone-client/+question/114731

ОТВЕТСТВЕННЫЙ ОТВЕТ:

Чтобы ответить .... * \\.находится в начале старого шаблона, поэтому заменив:

"(u1)? конфликта (\. [0-9] +)?) $")

на:

"(u1)? Конфликта (\. [0-9] +)? | Iso) $")

Должен это сделать.

Список строк друг за другом в Pythonпросто объединяю их, чтобы все это было одной строкой.

1 голос
/ 09 июня 2010

Регулярное выражение для сопоставления ISO-файлов будет

".*\\.iso$"

Что соответствует чему-либо, заканчивающемуся на ".iso"

Я думаю вы можете добавить это как еще одну строку в вызове re.compile, но тот, кто знает Python лучше, чем я, может подтвердить это.

0 голосов
/ 15 июня 2010

«У вас есть проблема, поэтому вы думаете:« Эй, я просто использую регулярное выражение ». Теперь у вас есть две проблемы»

Вот намного более простое решение вашей проблемы:

def shouldIignore(filename):
    ext = filename.split('.')[-1] # Get the extension
    ignorelist = ('.iso', '.pyc', '.blend1', '.bigfile')
    if ext in ignorelist:
        return True
    return False

А вот и дополнительный бонус - это займет все 3 минуты?чтобы расширить это, чтобы получить расширения из файла игнорирования.

HTH

...