質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

7919閲覧

Pythonの結果をテキストファイルに出力したい

mah3

総合スコア17

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/01/16 04:36

編集2019/01/16 04:53

Pythonでの計算結果をテキストファイルに出力しようとしたのですが、上手く行きませんでした。

if len(ligand_list) > 0: #print(ligand_list) count_ligand_list = collections.Counter(ligand_list) for k,v in count_ligand_list.items(): #print(k,v) print('{0} 原子が含まれている平面は {1}個存在する'.format(atom[k],v)) file = open('t.txt', 'w') file.write('{0} 原子が含まれている平面は {1}個存在する'.format(atom[k],v))

というコードで走らせてみると
Pythonの画面には

PA 原子が含まれている平面は 4個存在する
O1A 原子が含まれている平面は 4個存在する
O2A 原子が含まれている平面は 4個存在する
O5B 原子が含まれている平面は 4個存在する
C5B 原子が含まれている平面は 3個存在する
C4B 原子が含まれている平面は 4個存在する
O4B 原子が含まれている平面は 4個存在する
C3B 原子が含まれている平面は 1個存在する
O3B 原子が含まれている平面は 1個存在する
C2B 原子が含まれている平面は 1個存在する
C1B 原子が含まれている平面は 3個存在する
N9A 原子が含まれている平面は 4個存在する
C8A 原子が含まれている平面は 3個存在する
N7A 原子が含まれている平面は 3個存在する
C5A 原子が含まれている平面は 4個存在する
C6A 原子が含まれている平面は 4個存在する
N6A 原子が含まれている平面は 4個存在する
N1A 原子が含まれている平面は 4個存在する
C2A 原子が含まれている平面は 4個存在する
N3A 原子が含まれている平面は 4個存在する
C4A 原子が含まれている平面は 4個存在する
O3 原子が含まれている平面は 4個存在する
PN 原子が含まれている平面は 4個存在する
O2N 原子が含まれている平面は 4個存在する
O5D 原子が含まれている平面は 4個存在する
C5D 原子が含まれている平面は 3個存在する
O4D 原子が含まれている平面は 2個存在する
N1N 原子が含まれている平面は 1個存在する
C2N 原子が含まれている平面は 1個存在する
C3N 原子が含まれている平面は 2個存在する
C7N 原子が含まれている平面は 1個存在する
O7N 原子が含まれている平面は 2個存在する
N7N 原子が含まれている平面は 1個存在する
C4N 原子が含まれている平面は 4個存在する
C5N 原子が含まれている平面は 4個存在する
C6N 原子が含まれている平面は 2個存在する

と表示されるのですが、テキストファイルには

C5N 原子が含まれている平面は 4個存在する

としか表示されません。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BeatStar

2019/01/16 04:41

現時点でのコードはすべてでしょうか? ファイルに書き込むための処理がないのは気のせいでしょうか?
mah3

2019/01/16 04:48

すみません、コード間違えてました
guest

回答2

0

ループの内側で毎回ファイルを作成してしまっているため、最後の書き込みしか保存されません。
ループの外側でファイルを開きましょう。

Python

1file = open('t.txt', 'w') 2if len(ligand_list) > 0: 3 # 略

投稿2019/01/16 05:00

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mah3

2019/01/16 05:21

ご回答ありがとうございます。 ''' file = open('t.txt', 'w') if len(ligand_list) > 0: #print(ligand_list) count_ligand_list = collections.Counter(ligand_list) for k,v in count_ligand_list.items(): #print(k,v) print('{0} 原子が含まれている平面は {1}個存在する'.format(atom[k],v)) file.write('{0} 原子が含まれている平面は {1}個存在する'.format(atom[k],v)) ''' でやってみたのですが、テキストファイルには何も書かれていませんでした...
KojiDoi

2019/01/16 06:11

file.closeしないとまずいんじゃないですかね。
mah3

2019/01/16 06:32

ありがとうございます! 上手くいきました!!!
guest

0

ベストアンサー

ほとんどcan110さんがお書きになっている通り。

ちょっと補足的に書きますね。

for文内にファイルを開く処理を書くと、

ファイルを開く -> 書き込む -> ファイルを閉じる -> ファイルを開く...

っていう風になる場合があります。

ただし、言語によっては ファイルを閉じるっていう処理が自動的には行われない場合があるので、メモ帳として、同じテキストファイルを多重起動するような感じになるかと。

よって、for前までにファイルを開いておく。(同じファイルに書き込んだりするならね。)

で、最後は closeメソッドかなんか( 言語とかツールによって違う ) でファイルを閉じてください。

Pythonは多分

インスタンス化でファイルを開いて、

closeメソッドでファイルを閉じる。

だと思います。

なので閉じないと反映されない言語もありますよ。

よって、

# あくまでイメージ f = open( 't.txt', 'w' ) for k,v in count_ligand_list.items(): # ここで印字 # ここで書き込み f.close() # ファイルを閉じる

みたいにしてみてください。

投稿2019/01/16 06:23

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mah3

2019/01/16 06:37

ご丁寧にありがとうございます。 お陰様でうまくいきました!ありがとうございます。 加えて質問なのですが、テキストファイルに出力された文章をPythonの画面のように改行させるにはどうすればいいでしょうか... file.write("\n".join('{0} 原子が含まれている平面は {1}個存在する'.format(atom[k],v))) というコードでやってみたのですが、1文字づつ改行されてしまいました。 ご教授いただければ幸いです。
BeatStar

2019/01/20 01:30

あ、確かにそうですね。 私はあまりPythonは使わないので... "\n".join('{0}... の "\n" を外してみました。 すると、普通に表示されます。 ただし、改行はないです。 よって、私なら f.write( '{0} 原子が含まれている平面は {1}個存在する'.format(atom[i],v)) f.write( '\n' ) という風に、改行を付与する。 「〇〇原子が含まれている...」から改行までをfor文の対象にしておいてください。 多分これでなんとかできると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問