views:

81

answers:

4

Hi, I am trying to modify the Ubuntu One File syncing python scripts to not including things like .iso's.

I have got as far as finding this file: /usr/share/pyshared/ubuntuone/u1sync/constants.py

Inside is this piece of code:

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]+)?)$")

How can I edit this last section (regex?) and make it ignore .iso files??? I'm fairly sure this is the place to put it!

Pretty sure this is standard python action :)

Any help would be appreciated.

Thanks kindly.

Andy

+1  A: 

The regex to match iso files would be

".*\\.iso$"

Which is match anything ending with ".iso"

I think you can add that as another line in the re.compile call but someone who knows python better than I do could confirm that.

Andrew Myers
I think you need the `|` character (this means OR in regular expressions) or it won't work.
Fabian
+3  A: 

The regex documentation for python would be the place to look that up.

For isos you could probably just add a "|.*\.iso$" to the last line.

Fabian
A: 

UbuntuOne should really have a .ignore file or equally.... I want to ignore lots of stuff... .pyc, .blend1 just for start.

UPDATE: it has - take a look at:

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

OBSOLETE ANSWER:

To answer... .*\\. is in the beginning of the old pattern, so replacing:

"(u1)?conflict(\.[0-9]+)?)$")

with:

"(u1)?conflict(\.[0-9]+)?|iso)$")

Should do it.

Listing strings after each other in Python is just concatenating them so it's all one string.

RedLib
A: 

"You have a problem, so you think 'Hey, I'll just use a regex'. Now you have two problems"

Here's a much easier solution to your problem:

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

And here's the added bonus - it should take all of 3 minutes? to extend this to get the extensions from an ignore file.

HTH

Wayne Werner