2012-05-01 9 views
0

私がしようとしているのは、作成するファイルの名前をユーザーに求めてから、このファイルにいくつかのものを保存することです。ファイルを保存するように人に依頼する

プログラムの私の部分は次のようになります。私は形式が.csvファイルにしたい

if saving == 1: 
     ask=raw_input("Type the name file: ") 
     fileout=open(ask.csv,"w") 
     fileout.write(output) 

、私は別のオプションを試してみましたが、動作するように見えることはできません。

答えて

5

ここでの問題は、open()に文字列を渡す必要があることです。 askは文字列を含む変数ですが、もう1つの文字列".csv"を追加してファイル名にしたいと考えています。 Pythonで+は文字列の連結演算子なので、ask+".csv"を意味し、askの内容には.csvが続きます。あなたが現在持っているのは、csv属性のask変数を探していて、エラーが発生します。ファイルを開くとき

ask = ask if ask.endswith(".csv") else ask+".csv" 
with open(ask, "w") as file: 
     file.write(output) 

the with statementの私の使用に注意してください:

with open(ask+".csv", "w") as file: 
    file.write(output) 

はまた、ユーザーがすでに拡張子を入力した最初の場合は、チェックをしたいかもしれません。読みやすく、例外が発生してもファイルが適切に閉じられるようにするのは良い方法です。

また、条件に基づいて簡単な変数の割り当てを行うには、ここではPython ternary operatorを使用しています(すでに".csv"で終わっている場合はそれを設定し、それ以外の場合は連結します)。

また、出力が既にCSVファイルに適していると仮定しているため、拡張機能だけではCSVにはなりません。一般的にCSVデータを扱うときは、おそらくthe csv moduleをチェックしたいと思うでしょう。

2

ask+'.csv'を使用して、必要な拡張子をユーザー入力の末尾に連結する必要があります。

ただし、拡張子が.csvのファイルを単に指定するだけでは、カンマ区切りのファイルにするには不十分です。出力をフォーマットする必要があります。それを行うにはcsvwriterを使用してください。 Pythonのドキュメントには、これを行う方法についていくつかのsimple examplesがあります。

フォーマットされたコンマ区切りの出力を自分で生成しないようにしてください。これは驚くほど難しい作業であり、組み込みの機能があれば全く無意味です。

0

askの変数は、raw_inputの後にstringとなる予定です。 あなたはそれに拡張.CSVを追加したいのであれば、あなたが実行する必要があります。

fileout = open(ask + ".csv", "w") 

動作するはずです。

関連する問題