対応する値を別々のリストに合計し、計算された合計で新しいファイルを書き込むプログラムを作成しようとしています。たとえば、私はinfile_1.txt
の10個のアイテムとinfile_2.txt
の10個のアイテムを持っています。目安はinfile_1.txt
の最初の数字をinfile_2
の最初の数字に追加し、2つの数字の合計で新しいテキストファイルを作成することです。 2つのファイルは私のプログラムと同じフォルダにあるので、Pythonはそれらを認識して新しいファイルをフォルダにも印刷します。私が使用していたコードは以下の通りです:アウトファイルで印刷する合計を取得できません
def sumen():
outfile = input("Name the output file: ")
myfile_1 = open("infile_1.txt",'r')
myfile_2 = open("infile_2.txt",'r')
outputfile = open(outfile, 'w')
for line in myfile_1:
readfile1 = myfile_1.readline()
readfile2 = myfile_2.readline()
totalenergy = myfile_1[0:] + myfile_2[0:]
print(totalenergy,file=outputfile)
myfile_1.close()
myfile_2.close()
outputfile.close()
sumen()
私はプログラムを実行すると、それは私がOUTFILE(totalenergy.txt
)を選択することを可能にし、それが終了します。私はPythonが作成するファイルをチェックしましたが、そこには何も書かれていません。 ":+ myfile_2 [0:] はTypeError: '_io.TextIOWrapper' オブジェクトは、添字化ないtotalenergy = myfile_1 [0]"
現在、私はエラーが発生しています。私はまた、 "'str'属性が 'close'の属性を持たないinfilesとoutfileの終了に関連する属性エラーが発生しました
もう1つの質問:2つのファイルが異なる場合長さの違いを考慮してforループを書き換えることは可能ですか?私が疑問に思っているもう一つのことは、それぞれの連続した繰り返しの間に各リストの次の値を取得するPythonの意味で、totalenergy = myfile_1[0:] + myfile_2[0:]
という行が正しいかどうかです。
私はPythonで比較的新しいので、どんな助けでも大歓迎です。ありがとう。
Pythonのバージョンによっては、反復と '.readline()'への明示的な呼び出しは安全ではなく、必ずしも正しく動作するとは限りません。 (ループを暗黙的に、あるいは 'next(myfile_1)'を使って明示的に)反復するだけで、 '.readline()'も呼び出さないでください。 – ShadowRanger
@ShadowRanger別ファイルの場合は本当に危険ですか? – Barmar
ああ、それは2つの異なるファイルだったので、それは安全です。もちろん、 'readfile1のために、zipのreadfile2(myfile_1、myfile_2):'は、とにかくより直接的に並列的に反復処理を行います。 – ShadowRanger