2016-05-12 30 views
0

txtファイルに印刷する際に問題があります。ファイルにはバイト単位で格納された情報が含まれています。私が何を試しても、出力はシェルでしか印刷できません。ここに私が持っているものがあります - どんな助けも歓迎です。Pythonでtxtファイルに書き込む

def main(): 
    with open("in.txt", "rb") as f: 
     byte = f.read(1) 
     while byte != "": 
      print ord(byte), 
      byte = f.read(1) 


with open('out.txt','w') as f: 
    if __name__ == '__main__': 
     f.write(main()) 
     close.f() 
+1

'main'関数に戻り値がありません –

答えて

2

これは、さまざまな関数とメソッドの基本的な誤解です。返される値はmain()で、ファイルにはmainprint()コールが必要です。それはそのようには機能しません。

def main(): 
    with open("in.txt", "rb") as f, open('out.txt','w') as output: 
     byte = f.read(1) 
     while byte != "": 
      output.write(str(ord(byte))) 
      byte = f.read(1) 

if __name__ == '__main__': 
    main() 

使用file.write()(あなたは出力のようなものを使用している場合は、現在されていない、またはバイト)ファイルに文字列を書き込みます。あなたのコードを動作させるためには、main()はあなたが書きたい内容の完全な文字列を返す必要があります。

+0

ありがとうございます - 明らかに私はまだ学んでいます。あなたの説明に本当に感謝します。これは問題を解決したようです。 – Maggie

1

あなたはmain()内からprint ord(byte)を呼び出しています。これはコンソールに表示されます。

またmain()返り値に起こっていることを前提とするように見えるf.write(main())を呼び出しているが、それはしません。

print ord(byte)は、希望の出力を文字列に追加する文で置き換えてから、main()の文字列のreturnを置き換えます。

+0

ありがとうございました! – Maggie

1

関数mainから文字列を返す必要があります。あなたは現在、それを印刷して何も返していません。これにより、文字列がアセンブルされ、返されます。

+0

フィードバックをいただきありがとうございます、私は得ることができるすべてのヘルプを使用することができます:) – Maggie

関連する問題