2014-09-18 5 views
-2

Я пытаюсь написать код для печати песни десять зеленых бутылок в текстовый файл, который находит и открывает блокнот под названием «десять зеленых бутылок». Хотя у меня возникают серьезные проблемы с открытием и печатью в текстовом файле, вам нужна помощь, чтобы это произошло. Я буду очень признателен, если вы могли бы помочь в решении этой проблемы:Печать петли в текстовый файл?

StringList = ['Ten ','Nine ','Eight ','Seven ','Six ','Five ','Four ','Three ','Two ','One '] 
StringList2 = ['ten','nine ','eight ','seven ','six ','five ','four ','three ','two ', 'one ','no '] 

string1 = ("green bottle \nHanging on the wall\n") 
string2 = ("green bottle\nHanging on the wall\nAnd if one green bottle") 
string3 = ("\nShould accidently fall\nThere'll be ") 
string4 = ("green bottles \nHanging on the wall \n") 
string5 = ("green bottles\nHanging on the wall\nAnd if one green bottle") 
string6 = ("green bottle\nHanging on the wall\n") 

def loopingverse(): 
verse1 ='' 
for x in range (0 , 10): 
if x > 8: verse1 = verse1 + (StringList[x] + string1 + StringList[x] + string2+string3 + StringList2[x + 1] + string4 + "\n") 
if x == 8: verse1 = verse1 + (StringList[x] + string4 + StringList[x] + string5 + string3 + StringList2[x + 1] + string6 + "\n") 
if x < 8: verse1 = verse1 + (StringList[x] + string4 + StringList[x] + string5+string3 + StringList2[x + 1] + string4 + "\n") 

возвращение verse1

import subprocess 
subprocess.call(['notepad.exe', 'ten green bottles.txt']) 



if __name__ == '__loopingverse__': 
loopingverse() 
+2

Почему вы открываете блокнот с файлом вместо использования open ("foo.txt", "wb") fo.write (sometext); – Enermis

ответ

0

This little tutorial предлагает большую помощь в том, чтобы добиться того, что вы пытаетесь сделать.

Ваш конечный продукт должен выглядеть примерно так:

... String lists here 
... Strings here 

with open("myfile.txt","w") as f: 
    for i in MyStrings: 
     f.write(i) 
-1

Хорошо, вот то, что на самом деле работает

StringList = ['Ten ', 'Nine ', 'Eight ', 'Seven ', 'Six ', 'Five ', 'Four ', 'Three ', 'Two ', 'One '] 
StringList2 = ['ten', 'nine ', 'eight ', 'seven ', 'six ', 'five ', 'four ', 'three ', 'two ', 'one ', 'no '] 

string1 = ("green bottle \nHanging on the wall\n") 
string2 = ("green bottle\nHanging on the wall\nAnd if one green bottle") 
string3 = ("\nShould accidently fall\nThere'll be ") 
string4 = ("green bottles \nHanging on the wall \n") 
string5 = ("green bottles\nHanging on the wall\nAnd if one green bottle") 
string6 = ("green bottle\nHanging on the wall\n") 

def loopingverse(): 
    verse1 = '' 
    for x in range (0 , 10):  
     if x > 8: 
      verse1 = verse1 + (StringList[x] + string1 + StringList[x] + string2 + string3 + StringList2[x + 1] + string4 + "\n") 
     if x == 8: 
      verse1 = verse1 + (StringList[x] + string4 + StringList[x] + string5 + string3 + StringList2[x + 1] + string6 + "\n") 
     if x < 8: 
      verse1 = verse1 + (StringList[x] + string4 + StringList[x] + string5 + string3 + StringList2[x + 1] + string4 + "\n") 
     with open('file.txt', 'w') as wr: 
       #write the verse to the file 
       wr.write(verse1) 
    print("Done") 
#launch the application 
if __name__ == '__main__': 
    loopingverse() 

удачи.

+0

Я уверен, что это правильно и все, но до тех пор, пока не удастся заставить его работать, и где именно поставить дополнительный код, который я пробовал, но его просто не печатали в текстовый файл. Я абсолютно ужасен в этом, я был бы очень признателен, если бы вы могли прокомментировать весь рабочий код – NZXTAIR

+0

* «еще лучше» * неверно - вы ** должны ** использовать менеджер контекста 'with' для обработки файлов, и это имеет дело с 'close' для вас. – jonrsharpe

+0

@jonrsharpe Пожалуйста, скажите мне, что не так с моим ответом ... Я надеюсь, что вы не принимаете английский язык на другой уровень – Olu

Смежные вопросы