Python Maniac wrote: > I am new to Python however I would like some feedback from those who > know more about Python than I do at this time. > > def scrambleLine(line): > s = '' > for c in line: > s += chr(ord(c) | 0x80) > return s > > def descrambleLine(line): > s = '' > for c in line: > s += chr(ord(c) & 0x7f) > return s >
Try using str.translate instead - it's usually much faster than a pure python loop: >>> scramble = "".join(chr(c | 0x80) for c in range(256)) >>> "source text".translate(scramble) '\xf3\xef\xf5\xf2\xe3\xe5\xa0\xf4\xe5\xf8\xf4' >>> descramble = "".join(chr(c & 0x7F) for c in range(256)) >>> '\xf3\xef\xf5\xf2\xe3\xe5\xa0\xf4\xe5\xf8\xf4'.translate(descramble) 'source text' >>> You might then do the translation inline e.g., untested: > def scrambleFile(fname,action=1): translators = {0: descramble, 1: scramble} # defined as above try: translation_action = translators[action] except KeyError: raise ValueError("action must be 0 or 1") > if (path.exists(fname)): ... ... for line in f: ff.write(line.translate(translation_action)) ... HTH Michael -- http://mail.python.org/mailman/listinfo/python-list