tattyan3
@tattyan3 (tatsuji shimo)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

python.期待した結果を返してくれない。

Q&A

Closed

解決したいこと なし。

発生している問題・エラー

1
2
3
4
5
1
6

1,2,3,4,5,6とできない。消して1,2,3,6にもならない。
Animation_file1.gif

該当するソースコード

import os

# ファイル名
data_file_name = 'my_test.txt'


new_f=bool(0)

   
my_list_in = []
def fail_new_f():

    if os.path.exists(data_file_name):
    #fileがあれば読み込む
        global new_f
        global my_list_in
        if new_f == bool(0):
            with open(data_file_name, 'r') as f:
                line = f.readline()
                if line != EOFError:
                #    print(line.rstrip("\n"))
                   line = line.rstrip("\n")
                   my_list_in.append(line)     
        
        if new_f==bool(1):
            with open(data_file_name, 'w') as f:
                for item in my_list_in:
                    f.write(item + '\n')
        new_f = bool(1)
    else:
    #fileがなければ作成
        my_list_in = ['1', '2', '3', '4', '5']  
        with open(data_file_name, 'w') as f:
            for item in my_list_in:
                f.write(item + '\n')

if not os.path.exists(data_file_name):
    fail_new_f()

if len(my_list_in) <= 6:
    if new_f == (0):
        fail_new_f()

    my_list_in.append('6')    
    fail_new_f()

自分で試したこと

テキストファイルの書き換え。

0

2Answer

どのように直したいか分からないので、今どのように動いているかの説明だけします。

    #fileがあれば読み込む
        global new_f
        global my_list_in
        if new_f == bool(0):
            with open(data_file_name, 'r') as f:
                line = f.readline()
                if line != EOFError:
                #    print(line.rstrip("\n"))
                   line = line.rstrip("\n")
                   my_list_in.append(line) # <==== ここ

コメントで指した場所で、 line に入っている '1'my_list_in に入っている ['1', '2', '3', '4', '5'] に append しています。さらに、

if len(my_list_in) <= 6:
    if new_f == (0):
        fail_new_f()

    my_list_in.append('6') # <==== ここ
    fail_new_f()

で、 '6'['1', '2', '3', '4', '5', '1'] に append しています。これを書き出しているので、結果は

1
2
3
4
5
1
6

となります。

1Like

Comments

  1. @tattyan3

    Questioner

    改行LINEが一個増えるのか、最後にで、数が+1された配列になる。
    数を3にして1になるのはなぜですか?
    "1","2","3"が書いてあるとして読み込まず"1"EOF "6"になるの。

  2. 何をお聞きになりたいのかよく分かりませんでした。

    数を3にして1になるのはなぜですか?

    何の数を3にするとどこの数が1になるのでしょうか。

  3. @tattyan3

    Questioner

    解決しました。

思った通りに動きません。書いた通りに動きます。
python -m pdb hoge.pyか VSCode でステップ実行してみれば分かると思います。

0Like

Comments

  1. @tattyan3

    Questioner

    余計に分からなくなりましたunicodo入れられんし。ステップ動作わからん。

  2. ググれば大概のことはネットに情報があります。
    ググるときのキーワードの指定の仕方で得られる情報の質が変わると思います。

  3. @tattyan3

    Questioner

    ググってアレンジしたのが動かんだけです。読み込みのやり方が、多分、私のミスです。わたしのバグと言う事で閉じます。
    みなさま、ありがとうございました。##解決##です。

Your answer might help someone💌