2012-03-07 26 views
0

私はプログラムからテキストファイルにリモートで書き込むことができるPythonでプログラムを書いています。関連するコード:非 ".txt"ファイルへの書き込み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」以外のファイルを選択すると、ファイルを開くことができません。それだけでエラーが発生し、ファイルを開くことができません。これを回避する方法はありますか?

+2

あなたは、サーバーのファイルシステムの任意の場所に任意のファイルを作成させますか? – sdolan

+1

はい、正しい出力形式でファイルにデータを書き込む必要があります。 –

+0

@sdolan: "遠隔的に" :)私は好きです。 –

答えて

1

あなたのコードは低音です。 テキストを保存するファイルの種類と、それに基づいて拡張子を設定する必要があります。 ドットを入れる必要がありません...

その後、rtfの拡張子または文書でストレートテキストを保存することができます。 DocXとpdfは動作しません。そのタイプの文書を作成してからテキストをコンテンツとして追加する必要があります。

0

他の形式はバイナリファイルとして扱われると想像しています(私はWindowsをあまり使わないので推測しています)。その場合、あなたはバイナリファイルとして開く必要があります。

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

しかし、私は推測するバイナリファイルに追加するには制限があるかもしれませんか...? [明らかに - 感謝アレクシス]。誰もが指摘しているように、バイナリファイルの場合、これはあまりうまくいかない可能性があります。

もっと一般的に言えば、ここで読んだ内容にもかかわらず、これは私たちがすべて学んだ方法です。周りを遊んで、何かをやっていて、やめて、やらないことを学ぶ。私は、よりスマートな、あなたを魅了するニクラスのスタイルが、特にグレーティングであることが分かりました。彼はそれを認めないかもしれませんが、彼はかつて愚かな小さなプログラムを書き、ショックをしていましたが、すべての答えは分かっていませんでした。学び続けます。あなたのプログラムはクールです。それが完璧だったら何を学びましたか?

+0

' .docx'や '.rtf'ファイルには普通のテキストだけが期待どおりに機能するでしょうか?私は本当にそれを疑う。 –

+0

いいえ、それは私が言っていることではありません。 –

+0

はい、それはOPが期待しているようだが、これが絶対にどういうわけではないのか、バイナリモードでファイルを開くだけで何の助けになるのか説明していない。 –

1

あなたのコードから、 "textin"には通常のテキストが含まれているように見えます。 Word文書にはヘッダー、フォント情報などが含まれているため、文書の種類ごとにライブラリを参照する必要があります。たとえば、Excelスプレッドシートを作成するには、xlwtのPythonモジュールを使用します。 Word文書については、this SO questionを参照してください。 、RTFファイルのpythonライブラリはpyrtfです。

これはあなたがやっていたことですか、あなたの単純化されたコードを誤解しましたか?

PS。見知らぬ人があなたのサーバーにファイルを少なくとも1年は書いてもらえるようにするWebインタフェースを有効にしないでください。それを合理的に安全に行う方法はありますが、私はあなたがまだその準備ができていないと確信しています。 (このような問題のヒントについては、他のコメントを参照してください)。

+0

pyrtfのために、私はちょうどpyrtfをインポートし、それは魔法の作品ですか? – Billjk

+1

@ user1247509:いいえ、すべてのライブラリと同様に、ドキュメンテーションを見て、APIを調べてから、ちょっと混乱させてコードに組み込む必要があります。 –

+1

簡単に:あなたのためのテキストを生成するコマンドを提供します。それは複雑になります。私のアドバイスはこれを試してみることです:単語を使って "Hello"という単語を使って文書を作成します。それを保存し、メモ帳で文書を開きます。これはあなたが作成する必要のあるものです。私の助言は、バイナリ形式を数ヶ月間脇に置き、何か他のものに取り組むことです。 – alexis

関連する問題