Python 3学習ノート(10)ファイルと異常

10927 ワード

Python 3学習ノート(10)ファイルと異常
参考書『Pythonプログラミング:入門から実践へ』【美】Eric Matthes
テキストエディタで新しいファイルを作成し、ここで学んだPythonの知識をまとめます.各行は「In Python you can」で始まります.このファイルの名前をlearning_と付けます.python.txtは、本章の練習を完了するために作成されたプログラムが存在するディレクトリに格納される.このファイルを読み取り、書いた内容を3回印刷するプログラムを作成します.最初の印刷時にファイル全体を読み取ります.2回目の印刷時にファイルオブジェクトを巡回します.3回目の印刷では、各行を1つのリストに格納し、withコードブロックの外に印刷します.
file_name = 'learning_python.txt'
with open(file_name) as file:
    content = file.read()
    print(content)

file_name = 'learning_python.txt'
with open(file_name) as file:
    for line in file:
        print(line.rstrip())

file_name = 'learning_python.txt'
with open(file_name) as file:
    lines = file.readlines()

for line in lines:
    print(line.rstrip())

作成したファイルを読み込むlearning_python.txtの各行は、PythonをCなどの別の言語の名前に置き換えます.変更した行を画面に印刷します.
file_name = 'learning_python.txt'
with open(file_name) as file:
    for line in file:
        line = line.replace('Python', 'javascript').rstrip()
        print(line)

ユーザーに名前を入力するように促すプログラムを作成します.ユーザが応答すると、その名前をファイルguestに書き込む.txtで.
file_name = 'guest.txt'
with open(file_name, 'w') as file:
    name = input('Please enter your name:')
    file.write(name)

whileループを作成し、ユーザーに名前を入力するように要求します.ユーザーが名前を入力すると、画面に挨拶文を印刷し、ファイルguest_にアクセスレコードを追加します.book.txtで.このファイルの各レコードが1行独占されていることを確認します.
file_name = 'guest_book.txt'
with open(file_name, 'a') as file:
    while True:
        name = input('Please enter your name:')
        if name == 'quit':
            break
        file.write(name + '
'
)

ユーザーに数値入力を要求するとき、よくある問題は、ユーザーが数字ではなくテキストを提供していることです.この場合、入力を整数に変換しようとすると、TypeError異常が発生します.プログラムを作成し、ユーザーに2つの数字を入力してから、それらを加算して結果を印刷するように要求します.ユーザーが入力した値が数値でない場合は、TypeError例外をキャプチャし、友好的なエラーメッセージを印刷します.あなたが書いたプログラムをテストします.まず2つの数字を入力し、数字ではなくテキストを入力します.
number_0 = input('Please enter a number: ')
number_1 = input('Please enter another number: ')

try:
    number_0 = int(number_0)
    number_1 = int(number_1)
except ValueError:
    print('Please enter two numbers')
else:
    print('The result is: ' + str(number_0 + number_1))

作成したコードをwhileループに配置し、ユーザーが数字ではなくテキストを入力した後、数字を入力し続けることができます.
while True:
    number_0 = input('Please enter a number: ')
    number_1 = input('Please enter another number: ')
    try:
        number_0 = int(number_0)
        number_1 = int(number_1)
    except ValueError:
        print('Please enter two numbers')
    else:
        print('The result is: ' + str(number_0 + number_1))

2つのファイルcatsを作成する.txtとdogs.txtは、1番目のファイルに少なくとも3匹の猫の名前を格納し、2番目のファイルに少なくとも3匹の犬の名前を格納する.プログラムを作成し、ファイルを読み取り、画面に印刷しようとします.これらのコードをtry-exceptコードブロックに配置し、ファイルが存在しないときにFileNotFoundエラーをキャプチャし、友好的なメッセージを印刷します.いずれかのファイルを別の場所に移動し、exceptコードブロックのコードが正しく実行されることを確認します.
def open_file(file_name):
    try:
        with open(file_name) as file:
            for line in file:
                print(line.rstrip())
    except FileNotFoundError:
        print('Can not find file: ' + file_name)

open_file('cats.txt')
open_file('dogs.txt')

作成したexceptコードブロックを変更し、ファイルが存在しないときにプログラムが一言も言わないようにします.
def open_file(file_name):
    try:
        with open(file_name) as file:
            for line in file:
                print(line.rstrip())
    except FileNotFoundError:
        pass

open_file('cats.txt')
open_file('dogs.txt')

ファイルを読み取り、単語「the」が各ファイルに何回現れるかを計算するプログラムを作成します.
def count_word(file_name, word):
    try:
        with open(file_name) as file:
            count = 0
            for line in file:
                count += line.count(word)
            print('There are ' + str(count) + ' ' + word + ' words in file ' + file_name)
    except FileNotFoundError:
        pass

count_word('Alice in Wonderland.txt', 'the')

プログラムを作成し、ユーザーに好きな数字を入力し、jsonを使用するように促す.dump()はこの数字をファイルに格納します.もう1つのプログラムを作成し、ファイルからこの値を読み取り、「I know your favorite number!It’s_.」というメッセージを印刷します.
# write
import json
file_path = 'number.json'

try:
    with open(file_path, 'w') as file_obj:
        number = input('Pleas enter your favorite number: ')
        json.dump(number, file_obj)
except FileNotFoundError:
    pass
# read
import json
file_path = 'number.json'

try:
    with open(file_path) as file_obj:
        number = json.load(file_obj)
        print('I know your favorite number! It\'s ' + number)

except FileNotFoundError:
    pass

2つのプログラムを1つにする.ユーザーの好きな数字が保存されている場合は、ユーザーに表示されます.そうしないと、ユーザーに好きな数字を入力してファイルに保存するように要求されます.このプログラムを2回実行して、予想通りに動作するかどうかを確認します.
import json
file_path = 'number.json'

try:
    with open(file_path) as file_obj:
        number = json.load(file_obj)
        print('I know your favorite number! It\'s ' + number)

except FileNotFoundError:
    with open(file_path, 'w') as file_obj:
        number = input('Pleas enter your favorite number: ')
        json.dump(number, file_obj)
        print('I have remember your favorite number: ' + number)