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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

626閲覧

標準出力のリダイレクトについて

rainrain

総合スコア31

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/07/01 08:46

###質問
標準出力のリダイレクトを行う際に、途中で改行を入れる方法を教えていただきたいです。
どういうことかというと、、、
現在以下のようなプログラムでリダイレクトを行っています(Aの中でBが回っています)。

f=open(output_file,"w")
for i in range(...)  ・・・A
×××××
×××××
for j in range(...)  ・・・B
×××××
×××××
f.wright(str(x)+ ", ")
m += 1
f.close()

見れば分かる通りBのfor分の中でリダイレクトを行っています。
Bのrangeが3周分だと仮定して、Bが一回目にグルグル回って、「1,2,3」がファイルに書き込まれるとします。
そして、2回目に「4,5,6」が書き込まれるとすると、今のままのプログラムでは改行されないので、
ファイルには1行目に、
ーーーーーーーーーー
1,2,3,4,5,6
ーーーーーーーーーー
と書き込まれてしまいます。
これを、
ーーーーーーーーーー
1,2,3
4,5,6
7,8,9



ーーーーーーーーーー
とする方法はありますでしょうか?

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

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

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

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

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

hayataka2049

2018/07/01 08:47

markdownを使ってインデントが反映されるように再編集してくださいね(<code>ボタンを押して出てくるもので囲う)
otn

2018/07/01 11:16

「リダイレクト」とは何だと思っていますか?
guest

回答2

0

前の質問のコメントにもちょうど今書きましたが、

python

1f=open(output_file,"w") 2for i in range(...): 3 ... 4 for j in range(...): 5 ... 6 f.write(str(x)+ ", ") 7 f.write("\n") # ここで改行する 8f.close()

投稿2018/07/01 08:48

hayataka2049

総合スコア30933

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

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

pepperleaf

2018/07/01 08:56

惜しむらくは、単純な、 > f.write(str(x)+ ", ") では、 > 1,2,3, > 4,5,6, と最後にカンマが入る事。 今のところ、スマートな解決方法を知りません。
hayataka2049

2018/07/01 09:06

最後が来たのを検知してifで切り替え・・・はさすがに馬鹿馬鹿しいので、 forで書くのをやめて、",".join(list)で一行まとめて書く そして、それをやるならcsvモジュールのwriterを使って、writerowなりwriterowsなりで処理すればぁ? と発展していく訳ですね
guest

0

ベストアンサー

改行コードはご存知でしょうか?
改行コードは

"\n" or "\n\r"

です。

これを3インターバルごとに挿入したらいいので、

C#

1string out = ""; 2for (int i = 1; i < 13; ++i) { 3 out += i.ToString(); 4 if( (i % 3) == 0) { 5 out += "\n"; 6 } else { 7 out += ","; 8 } 9} 10

これで解決されます。
言語の記載がなかったので、見やすいC#で定義させてもらいました。
やっていることはなにも変わらないので置き換えながら勉強してみてください!

投稿2018/07/01 08:55

kuramon

総合スコア51

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

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

pepperleaf

2018/07/01 09:02

Python 3.x のタグがありますよ。 それと、多くの場合、"\n" のみの改行コードで OK。(特に Unix系)
kuramon

2018/07/01 09:12

タグの見落としで削除申請しておりました。スミマセン(汗 >それと、多くの場合、"\n" のみの改行コードで OK。(特に Unix系) 多くの情報があったほうが嬉しい場合もありますし、今後の役に立つかなと思い記載させていただきました。
pepperleaf

2018/07/01 09:26 編集

最初のコメントに忘れましたが、 書くならば、"\n\r" じゃなくて、"\r\n" の方が一般的。 理由は歴史的経緯。 \n --> New line(改行) または、Line feed(行送り) \r --> Carriage return (復帰) (過去の)プリンタは復帰動作に時間が掛かるので、先にする。 また、通信規約(正確な出所は忘れた)で、単独ならば、\n とあったと記憶する。 なお、Unix系では、\n 単独が標準です。(Windows: \r\n)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問