Запись в не ".txt" файлы Python - PullRequest
0 голосов
/ 08 марта 2012

Я пишу программу на Python, где вы можете написать текстовый файл из программы, удаленно. Соответствующий код:

namein = input("What do you want the filename to be? Don't include an extension...\n")
extin = input("What would you like the extension to be? This program supports:\nMicrosoft Word Document: '.docx'\nPlain Text File: '.txt'\nRich Text File: '.rtf'\nPages Document: '.pages'\n")
aw = input("Do you want to append your text file, or rewrite the whole thing? (append/write) ")
if aw == 'append':
    textin = input("In the line below, write the text you want to put into your text document!\n\n")
    outfile = open(namein + extin, 'a')
    outfile.write(textin)
    outfile.flush()
    print("Great! Now your text file has been updated!")
    print("Your text file:\n")
    outfile.close()
    outfile = open(namein + extin, 'r')
    print(outfile.read())

Когда кто-то выбирает файл не в формате .txt, он не может быть открыт! Это просто говорит об ошибке, файл не может быть открыт. Есть ли способ обойти это?

Ответы [ 3 ]

1 голос
/ 08 марта 2012

Из вашего кода похоже, что «textin» содержит обычный текст, который, возможно, вы читаете с клавиатуры.Вы не можете создать документ Word таким образом: документы Word содержат заголовки, информацию о шрифтах и ​​т. Д., Поэтому вам необходимо пройти библиотеку для каждого типа документа.Например, чтобы написать электронную таблицу Excel, вы можете использовать модуль xlwt python.Для документов Word см. этот вопрос SO . - это библиотека python для RTF-файлов, pyrtf.

Это то, что вы делали, или я неправильно понял ваш упрощенный код?

PS.НЕ включайте веб-интерфейс, который позволяет незнакомым людям писать файлы на вашем сервере, по крайней мере, в течение года.Есть способы сделать это достаточно безопасно, но я уверен, что вы еще не готовы к этому.(См. Другие комментарии, чтобы узнать о проблемах, с которыми вы столкнетесь).

1 голос
/ 08 марта 2012

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

После этого вы сможете сохранять прямой текст с расширением rtf или doc. DocX и pdf не собираются работать. вам нужно создать документ этого типа, а затем добавить текст в качестве содержимого.

0 голосов
/ 08 марта 2012

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

outfile = open(namein + extin, 'ab')

однако, я думаю, может быть ограничения на добавление в двоичные файлы ...?[очевидно нет - спасибо Алексис].Кроме того, как все указывают: если это бинарные файлы, то это вряд ли принесет пользу.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...