daved170 wrote:
On Dec 13, 2:34 am, Dennis Lee Bieber <wlfr...@ix.netcom.com> wrote:
On Sat, 12 Dec 2009 10:46:01 +0100, census <cen...@no-email.de>
declaimed the following in gmane.comp.python.general:
def scramble (a): return (a + 13) % 256
I'll see your modulo rot 13 and raise with a exclusive or...
-=-=-=-
import sys
def scramble(block, key=on't look"):
copies =nt(len(block) / len(key)) + 1
keystring =ey * copies
return "".join([ chr( ord(block[i])
^ ord(keystring[i]))
for i in range(len(block))])
def process(fin, fout, key=ne):
din =pen(fin, "rb")
dout =pen(fout, "wb")
while True:
block =in.read(1024)
if not block: break
if key is None:
block =cramble(block)
else:
block =cramble(block, key)
dout.write(block)
dout.close()
din.close()
if __name__ ="__main__":
fin =ys.argv[1]
fout =ys.argv[2]
if len(sys.argv) > 3:
key =ys.argv[3]
else:
key =one
process(fin, fout, key)
--
Wulfraed Dennis Lee Bieber KD6MOG
wlfr...@ix.netcom.com HTTP://wlfraed.home.netcom.com/
Thank you all.
Dennis I really liked you solution for the issue but I have two
question about it:
1) My origin file is Text file and not binary
2) I need to read each time 1 byte. I didn't see that on your example
code.
Thanks again All of you
Dave
If you really need to see each byte of the file, you need to open it as
binary. You can then decide that the bytes represent text, in some
encoding. If you don't use the "b" flag, the library may change the
newline characters out from under you. You have to decide if that matters.
I may have missed it, but I don't think you ever explained why you
insist on the data being read one byte at a time. Usually, it's more
efficient to read it into a buffer, and process that one byte at a
time. But in any case, you can supply your own count to read().
Instead of using 1024, use 1.
DaveA
--
http://mail.python.org/mailman/listinfo/python-list