職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

エラーとエラー処理

2021年03月21日 | Python
エラーとエラー処理について

【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【エラーを発生させる】
定義してない変数を指定すると、pythonはエラー表示する

Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> print(test_str)
Traceback (most recent call last):
File "", line 1, in <module>
print(test_str)
NameError: name 'test_str' is not defined
>>>
解説
Traceback (most recent call last):
→エラーの発生を告げる
File "", line 1, in <module> #一行目
→エラーが発生した場所と行番号
name 'test_str' is not defined #(「'test_str」は定義されてない)
→エラーの種類:エラー内容

例文2
「error_test.py 」ファイルを実行すると、エラー表示される
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
======================== RESTART: D:/Data/error_test.py ========================
エラー内容
Traceback (most recent call last):
File "D:/Data/error_test.py", line 2, in <module>
print(sys.argv[3])
IndexError: list index out of range
>>>
「error_test.py 」ファイルの内容
import sys
print(sys.argv[3])

【エラーの処理】
・try~excepを使ったエラー処理のついて

下記のコードを「error_test.py 」ファイルに保存し、実行する
サンプルコード
x = 1
y = 0

try:
z = x / y
except:
print('例外発生!ゼロで割ることはできません')

print('実行が終了しました')

実行
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
======================== RESTART: D:\Data\error_test.py ========================
例外発生!ゼロで割ることはできません
実行が終了しました
>>>

try~excepを使わない場合
下記のコードを「error_test2.py 」ファイルに保存し、実行する

・サンプルコード
x = 1
y = 0
z = x / y

print('実行が終了しました')

最後まで実行されない。
======================== RESTART: D:/Data/error_test2.py =======================
Traceback (most recent call last):
File "D:/Data/error_test2.py", line 3, in <module>
z = x / y
ZeroDivisionError: division by zero
>>>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ファイル名・ディレクトリ名の変更

2021年03月19日 | Python
ファイル名・ディレクトリ名の変更

【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

■ファイル名またはディレクトリ名を変更する
1)os モジュールのrename 関数を使用する場合

・書式
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
1 番目の引数に指定したパスが示すファイル名またはディレクトリ名を、 2 番目の引数に指定したパスが示すファイル名またはディレクトリ名に変更します。

例文(ファイル更新)
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import os
>>> oldpath = 'D:/Data/book.txt'
>>> newpath = 'D:/Data/back/memo.txt'
>>> os.rename(oldpath, newpath)
>>>
結果

ファイルが作成された。
ただし、変更後のディレクトリが存在しない場合はエラーが出る。

例文(ディレクトリ名の変更)
>>> import os
>>> oldpath = 'D:/Data/back'
>>> newpath = 'D:/Data/img/back'
>>> os.rename(oldpath, newpath)
>>>
ディレクトリbackがimgの下に配置される。

2)pathlib モジュールのrename 関数を使う場合
pathlib モジュールでもファイル名またはディレクトリ名を変更するrename 関数がある。

・書式
Path.rename(target)

ファイル名変更の例文
[対話コード]
>>> import pathlib
>>> oldpath = pathlib.Path('D:/Data/book.txt')
>>> oldpath.rename(pathlib.Path('D:/Data/memo.txt'))
WindowsPath('D:/Data/memo.txt')
>>>

ディレクトリ名変更の例文
>>> import pathlib
>>> oldpath = pathlib.Path('D:/Data/img')
>>> oldpath.rename(pathlib.Path('D:/Data/back'))
WindowsPath('D:/Data/back')
>>>

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

条件に一致するファイルやディレクトリの一覧を取得する(pathlibモジュール)

2021年03月17日 | Python
条件に一致するファイルやディレクトリの一覧を取得する(pathlibモジュール)

【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【条件に一致するファイルやディレクトリを取得する】
指定した条件に一致するファイルやディレクトリの一覧を取得するには pathlib モジュールで用意されている Path.glob メソッドを使う。→os モジュールではos.listdirメソッド

・書式
Path.glob(pattern)

特殊文字のパターン
* 0文字以上の任意の文字
? 1文字の任意の文字
[abc] 括弧の中のいずれかの文字


【*:0文字以上の任意の文字】
* は 0 文字以上の任意の文字とマッチする。

・対話コード
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('*.txt'):
print(name)


D:\Data\0314.txt
D:\Data\book.txt
D:\Data\cup.txt
D:\Data\test1.txt
>>>
※for 文の書式
for 変数 in イテラブルオブジェクト:
実行する文


【?:1文字の任意の文字】
? は 1 文字以上の任意の文字とマッチします。
例文
3 文字の任意の文字で始まり .txt で終わるファイルおよびディレクトリの一覧を取得してみる。
・対話コード
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('???.txt'):
print(name)


D:\Data\cup.txt
>>>

【[abc]:括弧の中のいずれかの文字】
[] は括弧の中に記述した文字のいずれか 1 文字とマッチします。

・例文
最初に a から e までの文字で始まり任意の文字が続いたあと .txt で終わるファイルおよびディレクトリの一覧を取得し、次に c から z までの文字で始まり任意の文字が続いたあと .txt で終わるファイルおよびディレクトリの一覧を取得します
・対話コード
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('[a-e]*.txt'):
print(name)


D:\Data\book.txt
D:\Data\cup.txt
>>>
【サブディレクトリの含めてマッチするファイルやディレクトリを取得する】
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('**/*.txt'):
print(name)


D:\Data\0314.txt
D:\Data\book.txt
D:\Data\cup.txt
D:\Data\test1.txt
>>>

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

条件に一致するファイルやディレクトリの一覧取得

2021年03月15日 | Python
条件に一致するファイルやディレクトリの一覧を取得する(pathlibモジュール)


【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【条件に一致するファイルやディレクトリを取得する】
指定した条件に一致するファイルやディレクトリの一覧を取得するには pathlib モジュールで用意されているPath.glob メソッドを使用する

・書式
Path.glob(pattern)
パスが示すディレクトリおよびそのサブディレクトリに含まれるファイルやディレクトリの中で、 1 番目の引数に指定したパターンとマッチするファイルやディレクトリへ順番にアクセスできるイテレータを取得します

・パターン
* 0文字以上の任意の文字
? 1文字の任意の文字
[abc] 括弧の中のいずれかの文字

【*:0文字以上の任意の文字】
* は 0 文字以上の任意の文字とマッチ

例文
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('*.txt'):
print(name)


D:\Data\0314.txt
D:\Data\book.txt
D:\Data\cup.txt
D:\Data\test1.txt
>>>
下記は b から始まるファイルおよびディレクトリの一覧
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('b*'):
print(name)


D:\Data\back
D:\Data\book.txt
>>>

【?:1文字の任意の文字】
? は 1 文字以上の任意の文字とマッチします。
例文
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('???.txt'):
print(name)


D:\Data\cup.txt
>>>
※ 3 文字の任意の文字で始まり .txt で終わるファイルおよびディレクトリの一覧を取得してみた。

【[abc]:括弧の中のいずれかの文字】
[] は括弧の中に記述した文字のいずれか 1 文字とマッチするファイルの一覧
例文
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('[a-e]*.txt'):
print(name)


D:\Data\book.txt
D:\Data\cup.txt
>>>

【サブディレクトリの含めてマッチするファイルやディレクトリを取得する】
パターンの中で ** を使用すると、0 個以上のディレクトリとサブディレクトリにマッチするようになります。

・例文
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('**/*.txt'):
print(name)


D:\Data\0314.txt
D:\Data\book.txt
D:\Data\cup.txt
D:\Data\test1.txt
>>>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ファイルとディレクトリの一覧の取得

2021年03月13日 | Python
ディレクトリに含まれるファイルとディレクトリの一覧を取得する

【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【ファイルとディレクトリの一覧取得:listdir 関数】
指定したディレクトリに含まれるファイルとディレクトリの一覧を取得するには、 os モジュールに含まれる listdir 関数を使用する

・書式
os.listdir(path='.')

【対話コード】
例文
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import os
>>> p = 'D:/Data/'
>>> filelist = os.listdir(p)
>>> for f in filelist:
print(f)
print(os.path.join(p, f))


back
D:/Data/back
sample10-1.py
D:/Data/sample10-1.py
sample11-1.py
D:/Data/sample11-1.py
sample8-1.py
D:/Data/sample8-1.py
sample8-4.py
D:/Data/sample8-4.py
sample9-1.py
D:/Data/sample9-1.py
sample9-2.py
D:/Data/sample9-2.py
>>>

【ファイルかディレクトリなのかを調べる】
指定したパスがファイルかディレクトリなのかを調べるには os.path モジュールで用意されている isfile 関数および isdir 関数を使用う。

・書式
os.path.isfile(path)←ファイル
または
os.path.isdir(path)←ディレクトリ

サンプルコード
「sample5-2.py」ファイルに下記のコードを書いて、保存して実行する
import os
path = 'D:/Data/'
filelist = os.listdir(path)

for f in filelist:
if os.path.isfile(os.path.join(path, f)):
print('[F]:' + f)
else:
print('[D]:' + f)

・実行結果
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
========================= RESTART: D:/Data/sample5-2.py ========================
[D]:back
[F]:sample10-1.py
[F]:sample11-1.py
[F]:sample5-2.py
[F]:sample8-1.py
[F]:sample8-4.py
[F]:sample9-1.py
[F]:sample9-2.py
>>>
【ファイルやディレクトリに関する情報も併せて取得する】
指定したディレクトリに含まれるファイルとディレクトリの一覧を取得する別の方法として、 os モジュールに含まれる scandir 関数を使う。

・書式
os.scandir(path='.')

サンプルコード
「sample5-3.py」ファイルに下記のコードを書いて、保存して実行する。
import os

path = 'D:/Data/'
for i in os.scandir(path):
if i.is_file():
print('[F]:' + i.name + ' ' + i.path)
else:
print('[D]:' + i.name + ' ' + i.path)

・実行結果
========================= RESTART: D:/Data/sample5-3.py ========================
[D]:back D:/Data/back
[F]:sample10-1.py D:/Data/sample10-1.py
[F]:sample11-1.py D:/Data/sample11-1.py
[F]:sample5-2.py D:/Data/sample5-2.py
[F]:sample5-3.py D:/Data/sample5-3.py
[F]:sample8-1.py D:/Data/sample8-1.py
[F]:sample8-4.py D:/Data/sample8-4.py
[F]:sample9-1.py D:/Data/sample9-1.py
[F]:sample9-2.py D:/Data/sample9-2.py
>>>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする