2016-04-11 10 views
-3

私はこの機能を使って入力ファイルを読み込み、入力ファイルの行を新しいファイルに出力しようとしています。 Pycharmは 'item'が使用されていない、または最初のforループで使用されたということを続けています。なぜアイテムが問題なのか分かりません。また、新しいファイルも作成されません。forループの問題点

input_list = 'persist_output_input_file_test.txt' 

def persist_output(input_list): 
    input_file = open(input_list, 'rb') 
    lines = input_file.readlines() 
    input_file.close() 
    for item in input_list: 
     write_new_file = open('output_word.txt', 'wb') 
     for item in lines: 
      print>>input_list, item 
     write_new_file.close() 
+0

? 'line in item:'の行に別の値でその名前をシャドウしました。その行の前に 'item'が使われていませんでした。 –

+0

>>演算子は使用しないでください。これはPythonのビットシフト演算子であり、C++のような抽出演算子ではありません。あなたが右に言うバイト数だけ 'print'を右クリックしようとします。これは不合理で、プログラムは正しくエラーを投げます。 –

+0

あなたはどのバージョンのPythonを使用していますか? – Signal

答えて

0

あなたのプログラムにはいくつかの問題があります。

  1. input_listは、ファイル名を表す文字列のようです。現在、文字列内の文字をで繰り返しています。

  2. すでに作成された変数itemを2番目のforループにシャドウします。私はそれを変更することをお勧めします。 Pythonで

  3. は、あなたが使用しているバージョンに応じて、画面に文を印刷するための正しい構文はprint text(パイソン2)またはprint(text)(Pythonの3)です。 C++のstd::cout << text << endl;とは異なります。 <<>>は実際にはビットを左または右にシフトするPythonのビット単位の演算子です。

0

実装にはいくつかの問題があります。あなたがするつもり何のために以下のコードを参照してください。次のように

def persist_output(input_list): 
    input_file = open(input_list, 'rb') 
    lines = input_file.readlines() 
    write_new_file = open('output_word.txt', 'wb') 
    input_file.close() 
    for item in lines: 
     print item 
     write_new_file.write(item); 

あなたの以前の実装に問題がある:あなたが入力ファイル名に反復されている最初のループでは

  1. input_listの読み込み対象の入力ファイルのリストを保持する予定の場合は、それらを開く必要もあります。今、ループは入力ファイル名の文字を繰り返し処理します。

  2. ループ内で出力ファイルを開いています。したがって、最後の書き込み操作だけが成功します。ループ外のファイルオープン操作(Ref:上記コードスニペット)を移動するか、モードを「追加」に編集する必要があります。これは以下のように行うことができます。

    write_new_file =オープン(「output_word.txt」、「A」)

  3. あなたがprintコマンドを使用している方法に構文エラーがあります。

+0

これは、まだ学習していて、 'print'文をまだ把握していない初心者にとってはあまり役に立ちません。説明なしでコンパイルするコードを与えるだけでは建設的ではありません。 – Signal

+0

はい、編集として追加していました。 –

-1
f=open('yourfilename','r').read() 
f1=f.split('\n') 
p=open('outputfilename','w') 
for i in range (len(f1)): 
    p.write(str(f1[i])+'\n') 
p.close() 

このことができます願っています。 `ボディ:まさにあなたがinput_listの項目のための` `でitem`を使用していたと思います

+0

これはOPの問題を解決するように見えますが、*理由*についての簡単な説明は素晴らしいでしょう。 – GergelyPolonkai