2017-10-24 6 views
0

私はデスクトップに作成しようとしているファイルの名前をどのようにしたいかをユーザーに尋ねようとしています。私は文字列に変数を追加しようとすると、それは私に、このエラーを与える:ここでこのタイプの変数は文字列と互換性がないのはなぜですか?

appendFile = open('%s.txt', 'a') % cusername 
TypeError: unsupported operand type(s) for %: '_io.TextIOWrapper' and 'str' 

は私のプログラムです:

def CNA(): 
    cusername = input("Create username\n>>") 
    filehandler = open("C:/Users/CJ Peine/Desktop/%s.txt", "w") % cusername 
    filehandler.close() 
    cpassword = input("Create password\n>>") 
    appendFile = open('%s.txt', 'a') % cusername 
    appendFile.write(cpassword) 
    appendFile.close() 
    print ("Account Created") 

にはどうすれば文字列に変数を両立させるのですか?

+2

'%cusername'は' '%s.txt ''でなければならず、' 'open()' 'でなければなりません。 – ZdaR

+1

'' open(...) 'はファイルハンドラを返すことになっています。 'file_handler%cusername'の意味は何ですか? – alfasin

+0

私はテキストファイルをデスクトップに表示すると、変数iの代わりに%cusernameが表示されます。 –

答えて

1

ではなく

cusername = input("Create username\n>>") 

filehandler = open("C:/Users/CJ Peine/Desktop/" + cusername + ".txt", "w") 

をやってみてください。または、あなたはちょうどopen関数のモジュラス演算子%を使用しようとしています。

0

の文字列の書式設定の演算子は%ですが、代わりにopen(...)から返されたオブジェクトを渡しています。

open("C:/Users/CJ Peine/Desktop/%s.txt" % cusername, "w") 

また、私見ははるかに読みやすい、とPython 3 Python 3 supports using the str.format(str) method ("C:/Users/CJ Peine/Desktop/{}.txt".format(cusername))が、とにかくPythonの2よりもはるかに優れています:あなたは、代わりにこの表現を使用することができます。 Python 2 has been out of active development for ages and is scheduled to no longer be supported;あなたが絶対にしなければそれを使用しないでください。

関連する問題