tags:

views:

40

answers:

4

The could below doesnt write to the text file as it should:

import re

download_results = open('download_result.txt', 'w')
s = 'AAAAAAABBBBCDEEEEEFFFFFFFFFFFFFGGGGGGGGGGGG##GGGGGGHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJKKKKKKKKKKKKLLLLLLLLLLLLLLLLMMMMMMM&&MMMMMMMMNNNNNNNNNNNNOOOOOOOOOOOO'
s = re.sub(r'[^\w]','',s)
s = ''.join(s)
for i in range(0, len(s), 60):
    download_results.write('%s' % (s[i:i+60]))
download_results.write('\n\n')
download_results.close()

The output in the text file is:

AAAAAAABBBBCDEEEEEFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJKKKKKKKKKKKKLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMNNNNNNNNNNNNOOOOOOOOOOOO

But i would like the output to be:

AAAAAAABBBBCDEEEEEFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGHHHHHHHHHHH
HHHIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJKKKKKKKKKKKKLLLLLLLLLLLLLL
LLMMMMMMMMMMMMMMMNNNNNNNNNNNNOOOOOOOOOOOO

Where the script writes "S" in lines containing 60 characters.

+1  A: 

Then append a newline in your write call within the loop - write() doesn't automatically add a newline, unlike print.

for i in range(0, len(s), 60):
    download_results.write('%s\n' % (s[i:i+60]))
download_results.write('\n')
download_results.close()
Amber
I think you wanted that `.write('\n')` to be in the for loop... it's not.
kiswa
No, I didn't. The newline written in the loop is the one in `'%s\n'` - the extra one written is to mirror the `write('\n\n')` in the OP's code.
Amber
A: 

Add a newline to the .write invocation. write doesn't add a newline itself (print does, which might have been what confused you)

Eli Bendersky
+2  A: 

Change this:

download_results.write('%s' % (s[i:i+60]))

to this:

download_results.write('%s\n' % (s[i:i+60]))
Dan Breslau
+1  A: 

You aren't writing any newline characters to the file.

Daniel Egeberg