<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Python - kotablog.pro</title>
	<atom:link href="https://kotablog.pro/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>https://kotablog.pro</link>
	<description></description>
	<lastBuildDate>Wed, 26 Nov 2025 07:24:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://kotablog.pro/wp-content/uploads/2022/11/cropped-D01_1353icon_512r-2-32x32.png</url>
	<title>Python - kotablog.pro</title>
	<link>https://kotablog.pro</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>iniファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</title>
		<link>https://kotablog.pro/python-operation-inifile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-operation-inifile</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 22:28:36 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1141</guid>

					<description><![CDATA[<p>Pythonで iniファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．演習用プログラムとiniファイルのダウンロード２．ソースコードの表示とiniファイルの内 [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-operation-inifile/">iniファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonで iniファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．演習用プログラムとiniファイルのダウンロード</a><ul><li><a href="#toc2" tabindex="0">practice17.txt</a></li><li><a href="#toc3" tabindex="0">practice17_ini.txt</a></li></ul></li><li><a href="#toc4" tabindex="0">２．ソースコードの表示とiniファイルの内容の確認</a></li><li><a href="#toc5" tabindex="0">３．iniファイルの読み込み</a><ul><li><a href="#toc6" tabindex="0">① iniファイルの読み込み</a></li></ul></li><li><a href="#toc7" tabindex="0">４．iniファイルの書き込み</a><ul><li><a href="#toc8" tabindex="0">① iniファイルの書き込み</a></li></ul></li><li><a href="#toc9" tabindex="0">５．書き込み時にコメントを残す</a><ul><li><a href="#toc10" tabindex="0">① セクションの外のコメントを残す</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．演習用プログラムとiniファイルのダウンロード</span></h2>
<p>演習用プログラム（ practice17.py ）と iniファイル（ practice17.ini ）をダウンロードします。<br />
演習用プログラムは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice17.py、practice17.ini を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc2">practice17.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 2.92 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice17-txt/?wpdmdl=1136&refresh=69d8a87a92a7e1775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc3">practice17_ini.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 0.17 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice17_ini-txt/?wpdmdl=1138&refresh=69d8a87a93f0c1775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc4">２．ソースコードの表示とiniファイルの内容の確認</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice17.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/notepad-practice17.png" alt="practice17.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice17.py</p></div><br />
メモ帳を使って、iniファイル（ practice17.ini ）の内容を確認します。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/practice17_practice17_2-2.png" alt="practice17.ini" width="800" height="500" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice17.ini</p></div><br />
先頭が ";" になっている行は、コメント行です。<br />
iniファイルの構成は、以下の通りです。<br />
[セクション]<br />
キー = 値<br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc5">３．iniファイルの読み込み</span></h2>
<p>最初に iniファイルを読み込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc6">① iniファイルの読み込み</span></h3>
<p>まずは、コマンドプロンプト で practice17.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">C:\Users\kotablog>python C:\Python\practice17.py

*** iniファイルの読み込み ****

セクションの存在確認を行います
セクション PC は存在します
セクション 時刻 は存在します

セクション内のキーの存在確認を行います
セクション PC のキー OS は存在します
セクション 時刻 のキー 前回起動 は存在します

値を取得します
PCのOSは、Windows11 です
前回起動時刻は、2024/10/10 02:15 です
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１７
04&emsp;
05&emsp;  iniファイルの読み書き
06&emsp;
07&emsp;"""
08&emsp;import sys           # sysモジュールのインポート
09&emsp;import configparser  # iniファイルアクセス用
10&emsp;import datetime      # 現在日時取得用
11&emsp;
</code>
</pre>
<p>ライブラリのインポート<br />
09行目で iniファイルにアクセスするときに必要な configparserライブラリをインポートしています。<br />
10行目で 現在日時取得時に必要な datetimeライブラリをインポートしています。</p>
<pre class="bluerayscode">
<code>
12&emsp;print("\n*** iniファイルの読み込み ****")
13&emsp;
14&emsp;file_name1 = r"C:\Python\practice17.ini"  # iniファイルのフルパス名
15&emsp;
16&emsp;# セクションのセット
17&emsp;SECTION1 = 'PC'
18&emsp;SECTION2 = '時刻'
19&emsp;
</code>
</pre>
<p>セクションのセット<br />
17行目と18行目で 'PC'セクションを 変数 SECTION1 に、'時刻'セクションを 変数 SECTION2 にセットしています。</p>
<pre class="bluerayscode">
<code>
20&emsp;# iniファイルの読み込み
21&emsp;config = configparser.ConfigParser()
22&emsp;config.read(file_name1)
23&emsp;
</code>
</pre>
<p>iniファイルの読み込み<br />
21行目と22行目で iniファイルを読み込んでいます。</p>
<pre class="bluerayscode">
<code>
24&emsp;# セクションが存在するかの確認
25&emsp;print("\nセクションの存在確認を行います")
26&emsp;if config.has_section(SECTION1):
27&emsp;  print("セクション " + SECTION1 + " は存在します")
28&emsp;else:
29&emsp;  print("セクション " + SECTION1 + " は存在しません")
30&emsp;  sys.exit()
31&emsp;
32&emsp;if config.has_section(SECTION2):
33&emsp;  print("セクション " + SECTION2 + " は存在します")
34&emsp;else:
35&emsp;  print("セクション " + SECTION2 + " は存在しません")
36&emsp;  sys.exit()
37&emsp;
</code>
</pre>
<p>セクションが存在するかの確認<br />
セクションにアクセスする前に、iniファイル内にセクションが存在しているかを確認することができます。<br />
26行目と32行目の config.has_section(セクション) が True の場合は、セクションが存在しています。</p>
<pre class="bluerayscode">
<code>
38&emsp;# セクション内のキーが存在するかの確認
39&emsp;print("\nセクション内のキーの存在確認を行います")
40&emsp;key1 = "OS"
41&emsp;if key1.lower() in list(map(lambda x:x[0], config.items(SECTION1))):
42&emsp;  print("セクション " + SECTION1 + " のキー " + key1 + " は存在します")
43&emsp;else:
44&emsp;  print("キー " + key1 + " は存在しません")
45&emsp;  sys.exit()
46&emsp;
47&emsp;key2 = "前回起動"
48&emsp;if key2.lower() in list(map(lambda x:x[0], config.items(SECTION2))):
49&emsp;  print("セクション " + SECTION2 + " のキー " + key2 + " は存在します")
50&emsp;else:
51&emsp;  print("キー " + key2 + " は存在しません")
52&emsp;  sys.exit()
53&emsp;
</code>
</pre>
<p>セクション内のキーが存在するかの確認<br />
キーにアクセスする前に、セクション内にキーが存在しているかを確認することができます。<br />
41行目と48行目の キー.lower() in list(map(lambda x:x[0], config.items(セクション))) が True の場合は、キーが存在しています。</p>
<pre class="bluerayscode">
<code>
54&emsp;# 値の取得
55&emsp;print("\n値を取得します")
56&emsp;
57&emsp;value_OS = config.get(SECTION1, 'OS')
58&emsp;print("PCのOSは、" + value_OS + " です")
59&emsp;
60&emsp;value_前回起動 = config[SECTION2]['前回起動']
61&emsp;print("前回起動時刻は、" + value_前回起動 + " です")
62&emsp;
63&emsp;#終了１
64&emsp;sys.exit()
</code>
</pre>
<p>値の取得<br />
57行目の config.get(セクション, キー) もしくは、<br />
60行目の config[セクション][キー] で、値を取得することができます。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc7">４．iniファイルの書き込み</span></h2>
<p>次に iniファイルへ書き込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc8">① iniファイルの書き込み</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** iniファイルの書き込み ****

セクション 時刻 の前回起動 の値を現在時刻にします
</pre>
<p>&nbsp;<br />
エクスプローラから、practice17_2.ini を開いて内容を確認してください。<br />
※本来であれば、practice17.ini に上書き保存するところですが、本演習では practice17_2.ini に書き込んでいます。</p>
<p>前回起動の値が書き換わっていますが、コメント行が消えています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
66&emsp;print("\n*** iniファイルの書き込み ****")
67&emsp;
68&emsp;file_name2 = r"C:\Python\practice17_2.ini"  # iniファイルのフルパス名
69&emsp;
70&emsp;# 現在時刻の取得
71&emsp;strNow = datetime.datetime.now().strftime("%Y/%m/%d %H:%M")
72&emsp;
73&emsp;# セクション時刻の前回起動を書き換え
74&emsp;print("\nセクション " + SECTION2 + " の" + key2 + " の値を現在時刻にします")
75&emsp;config[SECTION2]['前回起動'] = strNow
76&emsp;
77&emsp;with open(file_name2, 'w') as f:            # iniファイルの書き込み
78&emsp;  config.write(f)
79&emsp;
80&emsp;#終了２
81&emsp;sys.exit()
</code>
</pre>
<p>71行目で 現在時刻を取得して 変数 strNow にセットしています。<br />
75行目で SECTION2 の キーが 前回起動 の値を 現在時刻に置き換えています。<br />
77行目と78行目で iniファイルに書き込んでいます。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc9">５．書き込み時にコメントを残す</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc10">① セクションの外のコメントを残す</span></h3>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 書き込み時にコメントを残す ****

セクションの外のコメントを残します
</pre>
<p>&nbsp;<br />
エクスプローラから、practice17_2.ini を開いて内容を確認してください。</p>
<p>コメント行が残っています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
83&emsp;print("\n*** 書き込み時にコメントを残す ****")
84&emsp;
85&emsp;# セクションの外のコメントを残す
86&emsp;print("\nセクションの外のコメントを残します")
87&emsp;with open(file_name2, 'w') as f:  # iniファイルを開く
88&emsp;  f.write(';\n')
89&emsp;  f.write('; 演習プログラム１７\n')
90&emsp;  f.write(';\n')
91&emsp;  f.write(';  iniファイルの読み書き\n')
92&emsp;  f.write(';\n')
93&emsp;  config.write(f)                 # iniファイルの書き込み
94&emsp;
95&emsp;sys.exit()
</code>
</pre>
<p>93行目の iniファイルの内容を書き込む前に、<br />
88行目から92行目で セクションの外のコメントを書いています。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-openpyxl-excelfile/">＜openpyxlを使った Excelファイルの読み書き</a>
</td>
<td class="fgcenter">
iniファイルの読み書き
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-basic-series/">Pandas.Seriesの基礎＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-operation-inifile/">iniファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>openpyxlを使った Excelファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</title>
		<link>https://kotablog.pro/python-openpyxl-excelfile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-openpyxl-excelfile</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 22:09:55 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1131</guid>

					<description><![CDATA[<p>Pythonのopenpyxlライブラリを使ったExcelファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．openpyxlライブラリのインストール① コマンド [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-openpyxl-excelfile/">openpyxlを使った Excelファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonのopenpyxlライブラリを使ったExcelファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．openpyxlライブラリのインストール</a><ul><li><a href="#toc2" tabindex="0">① コマンドプロンプトを管理者として実行</a></li><li><a href="#toc3" tabindex="0">② インストールされているライブラリの確認</a></li><li><a href="#toc4" tabindex="0">③ openpyxl のインストール</a></li><li><a href="#toc5" tabindex="0">④ openpyxl のインストールの確認</a></li></ul></li><li><a href="#toc6" tabindex="0">２．演習用プログラムのダウンロード</a><ul><li><a href="#toc7" tabindex="0">practice16.txt</a></li><li><a href="#toc8" tabindex="0">excel_file1.xlsx</a></li></ul></li><li><a href="#toc9" tabindex="0">３．ソースコードの表示とExcelファイルの内容の確認</a></li><li><a href="#toc10" tabindex="0">４．Excelファイルの読み込み</a><ul><li><a href="#toc11" tabindex="0">① Excelファイルを読み込む</a></li></ul></li><li><a href="#toc12" tabindex="0">５．Excelファイルの書き込み</a><ul><li><a href="#toc13" tabindex="0">① Excelファイルに書き込む</a></li></ul></li><li><a href="#toc14" tabindex="0">６．セルの装飾</a></li><li><a href="#toc15" tabindex="0">７．セルに罫線を引く</a></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．openpyxlライブラリのインストール</span></h2>
<p>openpyxl を使うには、事前にインストール作業が必要です。<br />
手順を追って説明します。<br />
<!--------------------------------></p>
<h3><span id="toc2">① コマンドプロンプトを管理者として実行</span></h3>
<p>Windows画面の左下にある検索ボックスに、キーボードから cmd と入力します。<br />
右上に コマンドプロンプト が表示されていることを確認して、『管理者として実行』をクリックします。<br />
<div id="attachment_1115" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-1115" src="https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt.png" alt="コマンドプロンプトを管理者として実行" width="800" height="713" class="size-large wp-image-1115" srcset="https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt.png 1337w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-300x267.png 300w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-1024x913.png 1024w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-768x685.png 768w" sizes="(max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1115" class="wp-caption-text">コマンドプロンプトを管理者として実行</p></div><br />
ユーザー アカウント制御 ダイアログボックスが表示されて、「このアプリがデバイスに変更を加えることを許可しますか？」と聞いてくるので、『はい』をクリックします。<br />
管理者：コマンドプロンプト が起動します。</p>
<pre class="bluerays">
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!--------------------------------></p>
<h3><span id="toc3">② インストールされているライブラリの確認</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip list と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
インストールされているライブラリの一覧が表示されます。<br />
openpyxl がインストールされていないことを確認します。</p>
<pre class="bluerays">
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>pip list
Package         Version
--------------- -----------
numpy           2.1.2
pandas          2.2.3
pip             24.2
python-dateutil 2.9.0.post0
pytz            2024.2
pywin32         307
six             1.16.0
tzdata          2024.2
xlwings         0.33.1

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!--------------------------------></p>
<h3><span id="toc4">③ openpyxl のインストール</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip install openpyxl と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
最後の行に『 Successfully installed 』と表示されれば、インストール完了です。</p>
<pre class="bluerays">
C:\Windows\System32>pip install openpyxl
Collecting openpyxl
  Downloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
Collecting et-xmlfile (from openpyxl)
  Downloading et_xmlfile-1.1.0-py3-none-any.whl.metadata (1.8 kB)
Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
Downloading et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)
Installing collected packages: et-xmlfile, openpyxl
Successfully installed et-xmlfile-1.1.0 openpyxl-3.1.5

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p>【補足】学校や会社内のパソコンをお使いの方へ<br />
pip install openpyxl が失敗する場合があります。<br />
この場合は、インストールする際にプロキシサーバーの情報を渡す必要があります</p>
<p>プロキシサーバーの情報は、システム管理者に確認してください。<br />
・プロキシサーバー名<br />
・ポート番号</p>
<p>プロキシサーバーの情報を取得できましたら、openpyxl のインストールは次のようにします。<br />
pip install --proxy="プロキシサーバー名:ポート番号" openpyxl</p>
<p><!--------------------------------></p>
<h3><span id="toc5">④ openpyxl のインストールの確認</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip list と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
インストールされているライブラリの一覧が表示されます。<br />
一覧に openpyxl があることを確認します。</p>
<pre class="bluerays">
C:\Windows\System32>pip list
Package         Version
--------------- -----------
et-xmlfile      1.1.0
numpy           2.1.2
openpyxl        3.1.5
pandas          2.2.3
pip             24.2
python-dateutil 2.9.0.post0
pytz            2024.2
pywin32         307
six             1.16.0
tzdata          2024.2
xlwings         0.33.1

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc6">２．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice16.py ）とExcelファイル（ excel_file1.xlsx ）をダウンロードします。<br />
演習用プログラムは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice16.py、excel_file1.xlsx を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc7">practice16.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 5.51 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice16-txt/?wpdmdl=1128&refresh=69d8a87a97ac81775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/xlsx.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc8">excel_file1.xlsx</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 9.09 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/excel_file1-xlsx/?wpdmdl=1129&refresh=69d8a87a983661775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc9">３．ソースコードの表示とExcelファイルの内容の確認</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice16.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/notepad-practice16.png" alt="practice16.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice16.py</p></div><br />
Excelファイル（ excel_file1.xlsx ）の内容を確認します。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/practice16-excel_file1.png" alt="excel_file1.xlsx" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">excel_file1.xlsx</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc10">４．Excelファイルの読み込み</span></h2>
<p>最初に openpyxlライブラリ を使って、Excelファイルを読み込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc11">① Excelファイルを読み込む</span></h3>
<p>まずは、コマンドプロンプト で practice16.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">C:\Users\kotablog>python C:\Python\practice16.py

*** Excelファイルの読み込み ****

excel_file1.xlsxを開きます

A1セルのデータを取得します
商品コード

１行２列目のデータを取得します
商品名
商品名

A1セルからC2セルのデータを取得します（セル番地でアクセス）
[['商品コード', '商品名', '金額'], ['A0001', 'みかん', 100]]

A1セルからC2セルのデータを取得します（行番号、列番号でアクセス）
[['商品コード', '商品名', '金額'], ['A0001', 'みかん', 100]]
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１６
04&emsp;
05&emsp;  openpyxlを使った Excelファイルの読み書き
06&emsp;
07&emsp;"""
08&emsp;import sys             # sysモジュールのインポート
09&emsp;import openpyxl as px  # Excelファイルアクセス用
10&emsp;from openpyxl.styles import PatternFill           # セルの背景色設定用
11&emsp;from openpyxl.styles.borders import Border, Side  # セルの罫線設定用
12&emsp;
</code>
</pre>
<p>ライブラリのインポート<br />
09行目で openpyxlライブラリをインポートしています。このときライブラリ名を px に設定しています。<br />
10行目の PatternFill は、セルの背景色を設定するときに使います。<br />
11行目の Border と Side は、セルの罫線を設定するときに使います。</p>
<pre class="bluerayscode">
<code>
13&emsp;print("\n*** Excelファイルの読み込み ****")
14&emsp;
15&emsp;# Excelファイルを開く
16&emsp;print("\nexcel_file1.xlsxを開きます")
17&emsp;file_name1 = r"C:\Python\excel_file1.xlsx"  # ファイルのフルパス名
18&emsp;
19&emsp;wb = px.load_workbook(file_name1, read_only=True) # ブックの読み込み
20&emsp;ws = wb['Sheet1']                           # Sheet1を選択
21&emsp;
</code>
</pre>
<p>Excelファイルを開く<br />
17行目で 変数 file_name1 に excel_file1.xlsx のフルパスファイル名をセットしています。<br />
19行目で ブックを読み取り専用で開いて読み込みます。<br />
20行目で "Sheet1" を選択しています。</p>
<pre class="bluerayscode">
<code>
22&emsp;# 単一セルの読み込み（セル番地でアクセス）
23&emsp;print("\nA1セルのデータを取得します")
24&emsp;print(ws['A1'].value)
25&emsp;
</code>
</pre>
<p>単一セルの読み込み（セル番地でアクセス）<br />
24行目で ws[セル番地].value で、そのセルの値を取得しています。</p>
<pre class="bluerayscode">
<code>
26&emsp;# 単一セルの読み込み（行番号、列番号でアクセス）
27&emsp;print("\n１行２列目のデータを取得します")
28&emsp;print(ws.cell(row=1, column=2).value)
29&emsp;print(ws.cell(1, 2).value)
30&emsp;
</code>
</pre>
<p>単一セルの読み込み（行番号、列番号でアクセス）<br />
28行目、29行目は 行番号と列番号（今回は １行２列目）でセルを指定して、そのセルの値を取得しています。<br />
以下の２つの書き方はどちらも同じ結果を得ることができます。<br />
 ws.cell(row=行番号, column=列番号).value<br />
 ws.cell(行番号, 列番号).value</p>
<pre class="bluerayscode">
<code>
31&emsp;# セル範囲の読み込み（セル番地でアクセス）
32&emsp;print("\nA1セルからC2セルのデータを取得します（セル番地でアクセス）")
33&emsp;list2d = [[cell.value for cell in row] for row in ws['A1:C2']]
34&emsp;print(list2d)
35&emsp;
</code>
</pre>
<p>セル範囲の読み込み（セル番地でアクセス）<br />
33行目は セル番地でセル範囲を指定（ ws['A1:C2'] ）し、リスト内包表記を使って、２次元リストを取得しています。</p>
<p><a style="text-decoration: none;" href="https://note.nkmk.me/python-list-comprehension/">Pythonリスト内包表記の使い方</a></p>
<pre class="bluerayscode">
<code>
36&emsp;# セル範囲の読み込み（行番号、列番号でアクセス）
37&emsp;print("\nA1セルからC2セルのデータを取得します（行番号、列番号でアクセス）")
38&emsp;list2d = [[cell.value for cell in row] for row in ws.iter_rows(min_row = 1, max_row = 2, min_col = 1, max_col = 3)]
39&emsp;print(list2d)
40&emsp;
</code>
</pre>
<p>セル範囲の読み込み（行番号、列番号でアクセス）<br />
38行目は 下記の通りセルの行番号と列番号でセル範囲を指定し、リスト内包表記を使って、２次元リストを取得しています。<br />
・min_row：指定したい範囲の左上のセルの行番号<br />
・max_row：指定したい範囲の右下のセルの行番号<br />
・min_col：指定したい範囲の左上のセルの列番号<br />
・max_col：指定したい範囲の右下のセルの列番号</p>
<pre class="bluerayscode">
<code>
41&emsp;wb.close()                                  # ブックを閉じる
42&emsp;
43&emsp;#終了１
44&emsp;sys.exit()
</code>
</pre>
<p>Excelファイルを閉じる<br />
41行目の close()メソッドで、ブックを閉じています。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc12">５．Excelファイルの書き込み</span></h2>
<p>次に openpyxlライブラリ を使って、Excelファイルに書き込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc13">① Excelファイルに書き込む</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** Excelファイルの書き込み ****

excel_file1.xlsxを開きます

A3セルにデータを書き込みます（A0002）

３行２列目のセルにデータを書き込みます（メロン）

３行３列目のセルにデータを書き込みます（200）

A4セルからリストのデータを書き込みます（A0003, いちご, 300）

A5セルから２次元リストのデータを書き込みます（A0004,バナナ, 400、A0005,レモン,500）

C7セルに金額を合計する数式を入れる（=SUM(C2:C6)）
</pre>
<p>&nbsp;<br />
エクスプローラから、excel_file2.xlsx を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
46&emsp;print("\n*** Excelファイルの書き込み ****")
47&emsp;
48&emsp;print("\nexcel_file1.xlsxを開きます")
49&emsp;wb = px.load_workbook(file_name1)           # ブックの読み込み
50&emsp;ws = wb['Sheet1']                           # Sheet1を選択
51&emsp;
</code>
</pre>
<p>Excelファイルを開く<br />
49行目で 書き込み可能でブックを開いて、読み込みます。<br />
50行目で "Sheet1" を選択しています。</p>
<pre class="bluerayscode">
<code>
52&emsp;# 単一セルに書き込み（セル番地でアクセス）
53&emsp;print("\nA3セルにデータを書き込みます（A0002）")
54&emsp;ws['A3'] = "A0002"
55&emsp;
</code>
</pre>
<p>単一セルに書き込み（セル番地でアクセス）<br />
54行目で ws[セル番地] でセルを指定（今回は A3セル）して、そのセルに値（"A0002"）を入れています。</p>
<pre class="bluerayscode">
<code>
56&emsp;# 単一セルの書き込み（行番号、列番号でアクセス）
57&emsp;print("\n３行２列目のセルにデータを書き込みます（メロン）")
58&emsp;ws.cell(row=3, column=2).value = "メロン"
59&emsp;ws.cell(row=3, column=2, value="メロン")
60&emsp;
61&emsp;print("\n３行３列目のセルにデータを書き込みます（200）")
62&emsp;ws.cell(3, 3).value = 200
63&emsp;ws.cell(3, 3, 200)
64&emsp;
</code>
</pre>
<p>単一セルの書き込み（行番号、列番号でアクセス）<br />
58行目、59行目は 行番号と列番号（今回は ３行２列目）でセルを指定して、そのセルに値（"メロン"）を入れています。<br />
以下の２つの書き方はどちらも同じ結果を得ることができます。<br />
 ws.cell(row=行番号, column=列番号).value = セルに入れる値<br />
 ws.cell(row=行番号, column=列番号, value=セルに入れる値)</p>
<p>62行目、63行目は cell()の引数の row=、column=、value= を省略しています。<br />
 ws.cell(行番号, 列番号).value = セルに入れる値<br />
 ws.cell(行番号, 列番号, セルに入れる値)</p>
<pre class="bluerayscode">
<code>
65&emsp;# 行方向に書き込み
66&emsp;print("\nA4セルからリストのデータを書き込みます（A0003, いちご, 300）")
67&emsp;datalist = ['A0003', 'いちご', 300]
68&emsp;ws.append(datalist)
69&emsp;
</code>
</pre>
<p>行方向に書き込み<br />
67行目で １行分のリストを用意しています。<br />
68行目で append()メソッドを使って、行の追加を行っています。３行目までセルに値が入っているので、４行目に追加されます。</p>
<pre class="bluerayscode">
<code>
70&emsp;# 表形式で書き込み
71&emsp;print("\nA5セルから２次元リストのデータを書き込みます（A0004,バナナ, 400、A0005,レモン,500）")
72&emsp;list2d = [["A0004", "バナナ", 400],["A0005", "レモン", 500]]
73&emsp;for row in list2d:
74&emsp;  ws.append(row)
75&emsp;
</code>
</pre>
<p>表形式で書き込み<br />
72行目で ２行分の２次元リストを用意しています。<br />
73行目と74行目で append()メソッドを使って、２行分の追加を行っています。４行目までセルに値が入っているので、５行目と６行目に追加されます。</p>
<pre class="bluerayscode">
<code>
76&emsp;# セルに数式を入れる
77&emsp;print("\nC7セルに金額を合計する数式を入れる（=SUM(C2:C6)）")
78&emsp;ws['C7'] = "=SUM(C2:C6)"
79&emsp;
</code>
</pre>
<p>セルに数式を入れる<br />
78行目で ws[セル番地] でセルを指定（今回は C7セル）して、そのセルに数式（"=SUM(C2:C6)"）を入れています。<br />
セルを行番号と列番号で指定しても同じ結果を得ることができます。</p>
<pre class="bluerayscode">
<code>
80&emsp;file_name2 = r"C:\Python\excel_file2.xlsx"  # ファイルのフルパス名
81&emsp;wb.save(file_name2)                         # ブックの保存
82&emsp;wb.close()                                  # ブックを閉じる
83&emsp;
84&emsp;#終了２
85&emsp;sys.exit()
</code>
</pre>
<p>ブックを保存後に閉じる<br />
80行目で 変数 file_name2 に excel_file2.xlsx のフルパスファイル名をセットしています。<br />
81行目で ファイル名を 変数 file_name2 で、ブックを保存しています。<br />
82行目の close()メソッドで、ブックを閉じています。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc14">６．セルの装飾</span></h2>
<p>ここでは、セルの背景色の設定と、セルの表示形式（カンマ編集）の設定を行います。<br />
<!--------------------------------><br />
ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** セルの装飾 ****

excel_file2.xlsxを開きます

A1:C1のセル背景色を水色にします

金額の列をカンマ編集にします
</pre>
<p>&nbsp;<br />
エクスプローラから、excel_file2.xlsx を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
 87&emsp;print("\n*** セルの装飾 ****")
 88&emsp;
 89&emsp;print("\nexcel_file2.xlsxを開きます")
 90&emsp;wb = px.load_workbook(file_name2)           # ブックの読み込み
 91&emsp;ws = wb['Sheet1']                           # Sheet1を選択
 92&emsp;
 93&emsp;# セル背景色の設定
 94&emsp;print("\nA1:C1のセル背景色を水色にします")
 95&emsp;rgb = [204, 255, 255]                       # 水色（RGB値）
 96&emsp;color_code = ('#{}{}{}'.format(hex(rgb[0]), hex(rgb[1]), hex(rgb[2]))).replace('0x', '')[1:]  # RGB値から16進数カラーコードに変換
 97&emsp;fill = PatternFill(patternType='solid', fgColor=color_code)  # 水色の塗りつぶしを設定
 98&emsp;for row in ws['A1':'C1']:                   # 背景色を塗る
 99&emsp;  for cell in row:
100&emsp;    cell.fill = fill
101&emsp;
</code>
</pre>
<p>セル背景色の設定（水色 RGB値 赤=204、緑=255、青=255）<br />
95行目で 水色のRGB値を 変数 rgb にセットしています。</p>
<p>RGB値は、Excelの『書式』 - 『セルの書式設定』 - 『塗りつぶしタブ』 - 『その他の色(M)...』 - 『ユーザー設定タブ』で調べることができます。</p>
<p>96行目で RGB値から16進数カラーコードに変換しています。<br />
97行目で 水色の塗りつぶし（ patternType='solid' ）を設定しています。<br />
PatternFill() の引数 fgColor は、16進数カラーコードを指定する必要があります。<br />
16進数カラーコードが分かっている場合は、<br />
fill = PatternFill(patternType='solid', fgColor='CCFFFF')<br />
と記述できます。</p>
<p>98行目から100行目で A1セルからC1セルの背景色を設定しています。</p>
<p>背景色を設定するセルは、行番号と列番号を使って設定することもできます。<br />
 A1セル (行番号=1, 列番号=1)<br />
 C1セル (行番号=1, 列番号=3)</p>
<pre class="bluerayscode">
<code>
98&emsp;for row in ws.iter_rows(min_row = 1, max_row = 1, min_col = 1, max_col = 3):
</code>
</pre>
<p>・min_row：指定したい範囲の左上のセルの行番号<br />
・max_row：指定したい範囲の右下のセルの行番号<br />
・min_col：指定したい範囲の左上のセルの列番号<br />
・max_col：指定したい範囲の右下のセルの列番号</p>
<pre class="bluerayscode">
<code>
102&emsp;# セルの表示形式の設定
103&emsp;print("\n金額の列をカンマ編集にします")
104&emsp;for row in ws:
105&emsp;  for cell in row:
106&emsp;    col = cell.column                       # 列を取得
107&emsp;    if ws.cell(row = 1, column = col).value == "金額":
108&emsp;      cell.number_format = '#,##0'          # 書式を設定
109&emsp;
110&emsp;wb.save(file_name2)                         # ブックの保存
111&emsp;wb.close()                                  # ブックを閉じる
112&emsp;
113&emsp;#終了３
114&emsp;sys.exit()
</code>
</pre>
<p>セルの表示形式の設定（カンマ編集）<br />
107行目で 見出し（ヘッダ）の行（１行目）が "金額" の場合、<br />
108行目で 書式をカンマ編集（'#,##0'）に設定しています。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc15">７．セルに罫線を引く</span></h2>
<p><!--------------------------------><br />
ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** セルに罫線を引く ****

excel_file2.xlsxを開きます
罫線を引く方法を入力してください（1 or 2）>>>
</pre>
<p>&nbsp;<br />
キーボードから、1 を入力して、 <span class="keyboard-key"> Enter </span> キーを押下します。</p>
<p>エクスプローラから、excel_file2.xlsx を開いて内容を確認してください。<br />
値が入っていない A7セル と B7セル にも罫線が引かれています。</p>
<p>もう一度、コマンドプロンプト で practice16.py を実行します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** セルに罫線を引く ****

excel_file2.xlsxを開きます
罫線を引く方法を入力してください（1 or 2）>>>
</pre>
<p>&nbsp;<br />
キーボードから、2 を入力して、 <span class="keyboard-key"> Enter </span> キーを押下します。</p>
<p>エクスプローラから、excel_file2.xlsx を開いて内容を確認してください。<br />
値が入っているセルだけに罫線が引かれています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
116&emsp;print("\n*** セルに罫線を引く ****")
117&emsp;
118&emsp;print("\nexcel_file2.xlsxを開きます")
119&emsp;wb = px.load_workbook(file_name2)           # ブックの読み込み
120&emsp;ws = wb['Sheet1']                           # Sheet1を選択
121&emsp;
122&emsp;side = Side(style='thin', color='000000')   # 細い罫線、線の色は黒
123&emsp;border = Border(top=side, bottom=side, left=side, right=side)  # 全ての辺に上記sideを設定
124&emsp;
</code>
</pre>
<p>罫線自体の設定<br />
122行目で 細い罫線、線の色は黒 を設定しています。<br />
123行目で セルの全ての辺に 細い罫線、線の色は黒 を設定しています。</p>
<pre class="bluerayscode">
<code>
125&emsp;select = input('罫線を引く方法を入力してください（1 or 2）>>> ')  # 値を入力
126&emsp;
127&emsp;if select == "1":
128&emsp;  print("\n罫線を引きます")
129&emsp;  for row in ws:
130&emsp;    for cell in row:
131&emsp;      ws[cell.coordinate].border = border   # 罫線を引く
</code>
</pre>
<p>罫線を引く<br />
129行目から131行目で 表の全てのセルに罫線を引いています。</p>
<pre class="bluerayscode">
<code>
132&emsp;else:
133&emsp;  print("\n値が入っているセルに罫線を引きます")
134&emsp;  for row in ws:
135&emsp;    for cell in row:
136&emsp;      if ws[cell.coordinate].value:         # セルに値が入っていない場合は None
137&emsp;        ws[cell.coordinate].border = border # 罫線を引く
138&emsp;
139&emsp;wb.save(file_name2)                         # ブックの保存
140&emsp;wb.close()                                  # ブックを閉じる
141&emsp;
142&emsp;sys.exit()
</code>
</pre>
<p>値が入っているセルに罫線を引く<br />
136行目の if文 でセルに値が入っているかを確認して、値が入っている場合は、<br />
137行目で 罫線を引いています。</p>
<p>【参考】PatternFill() の引数の紹介</p>
<p>fgColor<br />
　セルの背景色を16進数カラーコードで指定します</p>
<p>bgColor<br />
　２色のパターンを使用する場合、16進数カラーコードで指定します</p>
<p>fill_type<br />
　塗りつぶし              ： "solid"</p>
<p>　２色のパターンを使用する場合、下記パターンの種類を設定します<br />
　75%灰色                 ： "darkGray"<br />
　50%灰色                 ： "mediumGray"<br />
　25%灰色                 ： "lightGray"<br />
　12.5%灰色               ： "gray125"<br />
　6.25%灰色               ： "gray0625"<br />
　横縞                    ： "darkHorizontal"<br />
　縦縞                    ： "darkVertical"<br />
　右下がり斜線            ： "darkDown"<br />
　左下がり斜線 縞         ： "darkUp"<br />
　左下がり斜線 格子       ： "darkGrid"<br />
　極太線 左下がり斜線 格子： "darkTrellis"<br />
　実線 横縞               ： "lightHorizontal"<br />
　実線 縦縞               ： "lightVertical"<br />
　実線 右下がり斜線       ： "lightDown"<br />
　実線 左下がり斜線 縞    ： "lightUp"<br />
　実線 横 格子            ： "lightGrid"<br />
　実線 左下がり斜線 格子  ： "lightTrellis"</p>
<p>【参考】Side() の引数 style の紹介</p>
<p>style<br />
　極細            ： "hair"<br />
　通常の太さ      ： "thin"<br />
　通常と太線の中間： "medium"<br />
　太線            ： "thick"<br />
　二重線          ： "double"</p>
<p>　上記のほかに<br />
　　"dashDot"<br />
　　"dashDotDot"<br />
　　"dotted"<br />
　　"mediumDashDotDot"<br />
　　"dashed"<br />
　　"mediumDashed"<br />
　　"slantDashDot"<br />
　　"mediumDashDot"<br />
　があります。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-xlwings-excelfile/">＜xlwingsを使った Excelファイルの読み書き</a>
</td>
<td class="fgcenter">
openpyxlを使った Excelファイルの読み書き
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-inifile/">iniファイルの読み書き＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-openpyxl-excelfile/">openpyxlを使った Excelファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>xlwingsを使った Excelファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</title>
		<link>https://kotablog.pro/python-xlwings-excelfile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-xlwings-excelfile</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 22:00:09 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1123</guid>

					<description><![CDATA[<p>Pythonのxlwingsライブラリを使ったExcelファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 ※本章はパソコンに Microsoft Excel がインストー [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-xlwings-excelfile/">xlwingsを使った Excelファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonのxlwingsライブラリを使ったExcelファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
※本章はパソコンに Microsoft Excel がインストールされていることが前提です。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．xlwingsライブラリのインストール</a><ul><li><a href="#toc2" tabindex="0">① コマンドプロンプトを管理者として実行</a></li><li><a href="#toc3" tabindex="0">② インストールされているライブラリの確認</a></li><li><a href="#toc4" tabindex="0">③ xlwings のインストール</a></li><li><a href="#toc5" tabindex="0">④ xlwings のインストールの確認</a></li></ul></li><li><a href="#toc6" tabindex="0">２．演習用プログラムのダウンロード</a><ul><li><a href="#toc7" tabindex="0">practice15.txt</a></li><li><a href="#toc8" tabindex="0">excel_file1.xlsm</a></li></ul></li><li><a href="#toc9" tabindex="0">３．ソースコードの表示とExcelファイルの内容の確認</a></li><li><a href="#toc10" tabindex="0">４．Excelファイルの読み込み</a><ul><li><a href="#toc11" tabindex="0">① Excelファイルを読み込む</a></li></ul></li><li><a href="#toc12" tabindex="0">５．Excelファイルの書き込み</a><ul><li><a href="#toc13" tabindex="0">① Excelファイルに書き込む</a></li></ul></li><li><a href="#toc14" tabindex="0">６．Excelマクロの実行</a><ul><li><a href="#toc15" tabindex="0">① Excelマクロの実行</a></li></ul></li><li><a href="#toc16" tabindex="0">７．セルの装飾</a><ul><li><a href="#toc17" tabindex="0">① セルの装飾</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．xlwingsライブラリのインストール</span></h2>
<p>xlwings を使うには、事前にインストール作業が必要です。<br />
手順を追って説明します。<br />
<!--------------------------------></p>
<h3><span id="toc2">① コマンドプロンプトを管理者として実行</span></h3>
<p>Windows画面の左下にある検索ボックスに、キーボードから cmd と入力します。<br />
右上に コマンドプロンプト が表示されていることを確認して、『管理者として実行』をクリックします。<br />
<div id="attachment_1115" style="width: 1034px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-1115" src="https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt.png" alt="コマンドプロンプトを管理者として実行" width="800" height="713" class="size-large wp-image-1115" srcset="https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt.png 1337w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-300x267.png 300w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-1024x913.png 1024w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-768x685.png 768w" sizes="(max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1115" class="wp-caption-text">コマンドプロンプトを管理者として実行</p></div><br />
ユーザー アカウント制御 ダイアログボックスが表示されて、「このアプリがデバイスに変更を加えることを許可しますか？」と聞いてくるので、『はい』をクリックします。<br />
管理者：コマンドプロンプト が起動します。</p>
<pre class="bluerays">
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!--------------------------------></p>
<h3><span id="toc3">② インストールされているライブラリの確認</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip list と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
インストールされているライブラリの一覧が表示されます。<br />
xlwings がインストールされていないことを確認します。</p>
<pre class="bluerays">
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>pip list
Package         Version
--------------- -----------
numpy           2.1.2
pandas          2.2.3
pip             24.2
python-dateutil 2.9.0.post0
pytz            2024.2
pywin32         307
six             1.16.0
tzdata          2024.2

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!--------------------------------></p>
<h3><span id="toc4">③ xlwings のインストール</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip install xlwings と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
最後の行に『 Successfully installed 』と表示されれば、インストール完了です。</p>
<pre class="bluerays">
C:\Windows\System32>pip install xlwings
Collecting xlwings
  Downloading xlwings-0.33.1-cp312-cp312-win_amd64.whl.metadata (5.5 kB)
Requirement already satisfied: pywin32>=224 in c:\python\lib\site-packages (from xlwings) (307)
Downloading xlwings-0.33.1-cp312-cp312-win_amd64.whl (1.6 MB)
   ---------------------------------------- 1.6/1.6 MB 940.0 kB/s eta 0:00:00
Installing collected packages: xlwings
Successfully installed xlwings-0.33.1

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p>【補足】学校や会社内のパソコンをお使いの方へ<br />
pip install xlwings が失敗する場合があります。<br />
この場合は、インストールする際にプロキシサーバーの情報を渡す必要があります</p>
<p>プロキシサーバーの情報は、システム管理者に確認してください。<br />
・プロキシサーバー名<br />
・ポート番号</p>
<p>プロキシサーバーの情報を取得できましたら、xlwings のインストールは次のようにします。<br />
pip install --proxy="プロキシサーバー名:ポート番号" xlwings</p>
<p><!--------------------------------></p>
<h3><span id="toc5">④ xlwings のインストールの確認</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip list と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
インストールされているライブラリの一覧が表示されます。<br />
一覧に xlwings があることを確認します。</p>
<pre class="bluerays">
C:\Windows\System32>pip list
Package         Version
--------------- -----------
numpy           2.1.2
pandas          2.2.3
pip             24.2
python-dateutil 2.9.0.post0
pytz            2024.2
pywin32         307
six             1.16.0
tzdata          2024.2
xlwings         0.33.1

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc6">２．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice15.py ）とExcelファイル（ excel_file1.xlsm ）をダウンロードします。<br />
演習用プログラムは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice15.py、excel_file1.xlsm を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc7">practice15.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 6.14 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice15-txt/?wpdmdl=1121&refresh=69d8a87a9c2da1775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/xlsm.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc8">excel_file1.xlsm</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 14.15 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/excel_file1-xlsm/?wpdmdl=1122&refresh=69d8a87a9cb741775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc9">３．ソースコードの表示とExcelファイルの内容の確認</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice15.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/notepad-practice15.png" alt="practice15.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice15.py</p></div><br />
Excelファイル（ excel_file1.xlsm ）の内容を確認します。<br />
excel_file1.xlsm は マクロ（ Macro1 ）を含みます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/practice15-excel_file1.png" alt="excel_file1.xlsm" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">excel_file1.xlsm</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc10">４．Excelファイルの読み込み</span></h2>
<p>最初に xlwingsライブラリ を使って、Excelファイルを読み込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc11">① Excelファイルを読み込む</span></h3>
<p>まずは、コマンドプロンプト で practice15.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">C:\Users\kotablog>python C:\Python\practice15.py

*** Excelファイルの読み込み ****

excel_file1.xlsmを開きます

A1セルのデータを取得します
商品コード

１行２列目のデータを取得します
商品名

B1セルからC2セルのデータを取得します
[['商品名', '金額'], ['みかん', 100.0]]
[['商品名', '金額'], ['みかん', 100.0]]

A1セルから行方向にデータを取得します
['商品コード', '商品名', '金額']
['商品コード', '商品名', '金額']

C1セルから列方向にデータを取得します
['金額', 100.0]
['金額', 100.0]

A1セルを左上とする表形式のデータを取得します
[['商品コード', '商品名', '金額'], ['A0001', 'みかん', 100.0]]
[['商品コード', '商品名', '金額'], ['A0001', 'みかん', 100.0]]
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１５
04&emsp;
05&emsp;  xlwingsを使った Excelファイルの読み書き
06&emsp;
07&emsp;"""
08&emsp;import sys            # sysモジュールのインポート
09&emsp;import xlwings as xw  # Excelファイルアクセス用
10&emsp;
11&emsp;print("\n*** Excelファイルの読み込み ****")
12&emsp;
13&emsp;# Excelファイルを開く
14&emsp;print("\nexcel_file1.xlsmを開きます")
15&emsp;file_name1 = r"C:\Python\excel_file1.xlsm"  # ファイルのフルパス名
16&emsp;app_excel = xw.App(visible=True)            # Excelの画面を表示する
17&emsp;#app_excel = xw.App(visible=False)          # Excelの画面を表示しない
18&emsp;
19&emsp;wb = xw.Book(file_name1)                    # ブックを開く
20&emsp;wb.activate()                               # ブックをアクティブにする
21&emsp;ws = xw.sheets["Sheet1"]                    # Sheet1を選択
22&emsp;ws.activate()                               # シートをアクティブにする
23&emsp;
</code>
</pre>
<p>Excelファイルを開く<br />
09行目で xlwingsライブラリをインポートしています。このときライブラリ名を xw に設定しています。<br />
15行目で 変数 file_name1 に excel_file1.xlsm のフルパスファイル名をセットしています。<br />
16行目と17行目では、Excelの画面を表示するかしないかを設定しています。<br />
App()メソッドの引数 visible が True の場合は表示する、False の場合は表示しません。<br />
規定値は表示するになります。<br />
19行目で ブックを開き、21行目で "Sheet1" を選択しています。</p>
<pre class="bluerayscode">
<code>
24&emsp;# 単一セルの読み込み（セル番地でアクセス）
25&emsp;print("\nA1セルのデータを取得します")
26&emsp;print(xw.Range("A1").value)
27&emsp;
</code>
</pre>
<p>単一セルの読み込み（セル番地でアクセス）<br />
26行目で Range()メソッドの引数に、セル番地（今回は A1セル）を指定することで、そのセルの値を取得しています。</p>
<pre class="bluerayscode">
<code>
28&emsp;# 単一セルの読み込み（行番号、列番号でアクセス）
29&emsp;print("\n１行２列目のデータを取得します")
30&emsp;print(xw.Range((1, 2)).value)
31&emsp;
</code>
</pre>
<p>単一セルの読み込み（行番号、列番号でアクセス）<br />
30行目で Range()メソッドの引数に、行番号と列番号（今回は １行２列目）を指定することで、そのセルの値を取得しています。</p>
<pre class="bluerayscode">
<code>
32&emsp;# セル範囲の読み込み
33&emsp;print("\nB1セルからC2セルのデータを取得します")
34&emsp;print(xw.Range("B1:C2").value)
35&emsp;print(xw.Range((1, 2),(2, 3)).value)
36&emsp;
</code>
</pre>
<p>セル範囲の読み込み<br />
34行目で Range()メソッドの引数に、セル範囲をセル番号（今回は B1:C2）で指定すると、そのセル範囲の値をリストで取得できます。<br />
B1セルは、行番号が 1 で 列番号が 2、C2セルは、行番号が 2 で 列番号が 3 になります。<br />
35行目で Range()メソッドの引数に、セル範囲を行番号と列番号で指定すると、そのセル範囲の値をリストで取得できます。</p>
<pre class="bluerayscode">
<code>
37&emsp;# 行方向に読み込み
38&emsp;print("\nA1セルから行方向にデータを取得します")
39&emsp;print(xw.Range("A1").expand('right').value)
40&emsp;print(xw.Range((1, 1)).expand('right').value)
41&emsp;
</code>
</pre>
<p>行方向に読み込み<br />
39行目では expand('right') を指定することで、開始セル（今回は A1セル）から行方向（右方向）のセルの値をリストで取得できます。<br />
40行目は 開始セルを行番号と列番号で指定する方法です。</p>
<pre class="bluerayscode">
<code>
42&emsp;# 列方向に読み込み
43&emsp;print("\nC1セルから列方向にデータを取得します")
44&emsp;print(xw.Range("C1").expand('down').value)
45&emsp;print(xw.Range((1, 3)).expand('down').value)
46&emsp;
</code>
</pre>
<p>列方向に読み込み<br />
44行目では expand('down') を指定することで、開始セル（今回は C1セル）から列方向（下方向）のセルの値をリストで取得できます。<br />
45行目は 開始セルを行番号と列番号で指定する方法です。</p>
<pre class="bluerayscode">
<code>
47&emsp;# 表形式のデータを読み込み
48&emsp;print("\nA1セルを左上とする表形式のデータを取得します")
49&emsp;print(xw.Range("A1").expand('table').value)
50&emsp;print(xw.Range((1, 1)).expand('table').value)
51&emsp;
</code>
</pre>
<p>表形式のデータを読み込み<br />
49行目では expand('table') を指定することで、左上セル（今回は A1セル）から表形式のセルの値をリストで取得できます。<br />
50行目は 左上セルを行番号と列番号で指定する方法です。</p>
<pre class="bluerayscode">
<code>
52&emsp;# Excelファイルを閉じる
53&emsp;wb.close()                                  # ブックを閉じる
54&emsp;app_excel.kill()                            # オブジェクトを廃棄
55&emsp;
56&emsp;#終了１
57&emsp;sys.exit()
</code>
</pre>
<p>Excelファイルを閉じる<br />
53行目の close()メソッドで、ブックを閉じています<br />
54行目の kill()メソッドで、Appオブジェクトを廃棄しています。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc12">５．Excelファイルの書き込み</span></h2>
<p>次に xlwingsライブラリ を使って、Excelファイルに書き込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc13">① Excelファイルに書き込む</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** Excelファイルに書き込み ****

excel_file1.xlsmを開きます

A3セルにデータを書き込みます（A0002）

３行２列目のセルにデータを書き込みます（メロン）

A4セルから行方向にデータを書き込みます（A0003, いちご）

C3セルから列方向にデータを書き込みます（200, 300）

A5セルから表形式のデータを書き込みます（A0004,バナナ, 400、A0005,レモン,500）
</pre>
<p>&nbsp;</p>
<p>エクスプローラから、excel_file2.xlsm を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
59&emsp;print("\n*** Excelファイルに書き込み ****")
60&emsp;
61&emsp;print("\nexcel_file1.xlsmを開きます")
62&emsp;app_excel = xw.App(visible=True)            # Excelの画面を表示する
63&emsp;#app_excel = xw.App(visible=False)          # Excelの画面を表示しない
64&emsp;
65&emsp;wb = xw.Book(file_name1)                    # ブックを開く
66&emsp;wb.activate()                               # ブックをアクティブにする
67&emsp;ws = xw.sheets["Sheet1"]                    # Sheet1を選択
68&emsp;ws.activate()                               # シートをアクティブにする
69&emsp;
70&emsp;# 単一セルに書き込み（セル番地でアクセス）
71&emsp;print("\nA3セルにデータを書き込みます（A0002）")
72&emsp;xw.Range("A3").value = "A0002"
73&emsp;
</code>
</pre>
<p>単一セルに書き込み（セル番地でアクセス）<br />
71行目で Range()メソッドの引数に、セル番地（今回は A3セル）を指定して、そのセルに "A0002" をセットしています。</p>
<pre class="bluerayscode">
<code>
74&emsp;# 単一セルの書き込み（行番号、列番号でアクセス）
75&emsp;print("\n３行２列目のセルにデータを書き込みます（メロン）")
76&emsp;xw.Range((3, 2)).value = "メロン"
77&emsp;
</code>
</pre>
<p>単一セルの書き込み（行番号、列番号でアクセス）<br />
76行目で Range()メソッドの引数に、行番号と列番号（今回は ３行２列目）を指定して、そのセルに "メロン" をセットしています。</p>
<pre class="bluerayscode">
<code>
78&emsp;# 行方向に書き込み
79&emsp;print("\nA4セルから行方向にデータを書き込みます（A0003, いちご）")
80&emsp;xw.Range("A4").value   = ["A0003", "いちご"]
81&emsp;xw.Range((4, 1)).value = ["A0003", "いちご"]
82&emsp;
</code>
</pre>
<p>行方向に書き込み<br />
80行目で Range()メソッドの引数に、セル番地（今回は A4セル）を指定して、リストを設定すると行方向のセルに値がセットされます。<br />
81行目は Range()メソッドの引数に、セルを行番号と列番号で指定する方法です。</p>
<pre class="bluerayscode">
<code>
83&emsp;# 列方向に書き込み
84&emsp;print("\nC3セルから列方向にデータを書き込みます（200, 300）")
85&emsp;xw.Range("C3",   transpose=True).value = [200, 300]
86&emsp;xw.Range((3, 3), transpose=True).value = [200, 300]
87&emsp;
</code>
</pre>
<p>列方向に書き込み<br />
85行目で Range()メソッドの第二引数に、transpose=True を指定すると、列方向のセルに値がセットされます。<br />
86行目は Range()メソッドの引数に、セルを行番号と列番号で指定する方法です。</p>
<pre class="bluerayscode">
<code>
88&emsp;# 表形式で書き込み
89&emsp;print("\nA5セルから表形式のデータを書き込みます（A0004,バナナ, 400、A0005,レモン,500）")
90&emsp;xw.Range("A5").value   = [["A0004", "バナナ", 400],["A0005", "レモン", 500]]
91&emsp;xw.Range((5, 1)).value = [["A0004", "バナナ", 400],["A0005", "レモン", 500]]
92&emsp;
93&emsp;file_name2 = r"C:\Python\excel_file2.xlsm"  # ファイルのフルパス名
94&emsp;wb.save(file_name2)                         # ブックの保存
95&emsp;wb.close()                                  # ブックを閉じる
96&emsp;app_excel.kill()                            # オブジェクトを廃棄
97&emsp;
98&emsp;#終了２
99&emsp;sys.exit()
</code>
</pre>
<p>表形式で書き込み<br />
90行目で Range()メソッドの引数に、セル番地（今回は A5セル）を指定して、２次元リストを設定すると、セル番地を左上にして表形式に値がセットされます。<br />
91行目は Range()メソッドの引数に、セルを行番号と列番号で指定する方法です。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc14">６．Excelマクロの実行</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc15">① Excelマクロの実行</span></h3>
<p>excel_file2.xlsm には以下のマクロが含まれます。</p>
<pre class="bluerayscode">
<code>
Sub Macro1()
'
' Macro1 Macro
' 金額欄を合計するマクロ
'
' Keyboard Shortcut: Ctrl+m
'
  Dim rng As Range
  Set rng = Range("C2:C6")
  Range("C7") = WorksheetFunction.Sum(rng)
  Set rng = Nothing
End Sub
</code>
</pre>
<p>このマクロをPythonから実行します。</p>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** Excelマクロの実行 ****

excel_file2.xlsmを開きます

マクロ Macro1 を実行します

ブックを保存して閉じます
</pre>
<p>&nbsp;<br />
エクスプローラから、excel_file2.xlsm を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
101&emsp;print("\n*** Excelマクロの実行 ****")
102&emsp;
103&emsp;print("\nexcel_file2.xlsmを開きます")
104&emsp;app_excel = xw.App(visible=True)            # Excelの画面を表示する
105emsp;#app_excel = xw.App(visible=False)          # Excelの画面を表示しない
106&emsp;
107&emsp;wb = xw.Book(file_name2)                    # ブックを開く
108&emsp;wb.activate()                               # ブックをアクティブにする
109&emsp;ws = xw.sheets["Sheet1"]                    # Sheet1を選択
110&emsp;ws.activate()                               # シートをアクティブにする
111&emsp;
112&emsp;print("\nマクロ Macro1 を実行します")
113&emsp;macro = wb.macro('Macro1')                  # マクロを取得
114&emsp;macro()                                     # マクロを実行
115&emsp;
116&emsp;print("\nブックを保存して閉じます")
117&emsp;wb.save()                                   # ブックの保存
118&emsp;wb.close()                                  # ブックを閉じる
119&emsp;app_excel.kill()                            # オブジェクトを廃棄
120&emsp;
121&emsp;#終了３
122&emsp;sys.exit()
</code>
</pre>
<p>113行目で 実行したいマクロ名を設定しています。<br />
114行目で マクロを実行しています。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc16">７．セルの装飾</span></h2>
<p>本章では、セルの装飾として<br />
・セル背景色の設定<br />
・セルの表示形式の設定（カンマ編集）<br />
を行います。<br />
<!--------------------------------></p>
<h3><span id="toc17">① セルの装飾</span></h3>
<p>ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** セルの装飾 ****

excel_file2.xlsmを開きます

A1:C1のセル背景色を水色にします

C2からC7のセルの表示形式をカンマ編集にします

ブックを保存して閉じます
</pre>
<p>&nbsp;<br />
エクスプローラから、excel_file2.xlsm を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
124&emsp;print("\n*** セルの装飾 ****")
125&emsp;
126&emsp;print("\nexcel_file2.xlsmを開きます")
127&emsp;app_excel = xw.App(visible=True)            # Excelの画面を表示する
128&emsp;#app_excel = xw.App(visible=False)          # Excelの画面を表示しない
129&emsp;
130&emsp;wb = xw.Book(file_name2)                    # ブックを開く
131&emsp;wb.activate()                               # ブックをアクティブにする
132&emsp;ws = xw.sheets["Sheet1"]                    # Sheet1を選択
133&emsp;ws.activate()                               # シートをアクティブにする
134&emsp;
135&emsp;# セル背景色の設定
136&emsp;print("\nA1:C1のセル背景色を水色にします")
137&emsp;xw.Range("A1:C1").color = 204, 255, 255
138&emsp;
</code>
</pre>
<p>セル背景色の設定<br />
137行目の Range(セルもしくはセル範囲).color に カラーコードをセットすることでセル背景色を設定しています。</p>
<pre class="bluerayscode">
<code>
139&emsp;# セルの表示形式の設定
140&emsp;print("\nC2からC7のセルの表示形式をカンマ編集にします")
141&emsp;xw.Range("C2:C7").number_format = '#,##0'
142&emsp;
143&emsp;print("\nブックを保存して閉じます")
144&emsp;wb.save()                                   # ブックの保存
145&emsp;wb.close()                                  # ブックを閉じる
146&emsp;app_excel.kill()                            # オブジェクトを廃棄
147&emsp;
148&emsp;sys.exit()
</code>
</pre>
<p>セルの表示形式の設定<br />
141行目の Range(セルもしくはセル範囲).number_format に表示形式を表す文字列をセットしています。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-csvfile/">＜ＣＳＶファイルの読み書き</a>
</td>
<td class="fgcenter">
xlwingsを使った Excelファイルの読み書き
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-openpyxl-excelfile/">openpyxlを使った Excelファイルの読み書き＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-xlwings-excelfile/">xlwingsを使った Excelファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ＣＳＶファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</title>
		<link>https://kotablog.pro/python-operation-csvfile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-operation-csvfile</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 21:52:31 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1109</guid>

					<description><![CDATA[<p>PythonでＣＳＶファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．pandasライブラリのインストール① コマンドプロンプトを管理者として実行② インストー [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-operation-csvfile/">ＣＳＶファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>PythonでＣＳＶファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．pandasライブラリのインストール</a><ul><li><a href="#toc2" tabindex="0">① コマンドプロンプトを管理者として実行</a></li><li><a href="#toc3" tabindex="0">② インストールされているライブラリの確認</a></li><li><a href="#toc4" tabindex="0">③ pandas のインストール</a></li><li><a href="#toc5" tabindex="0">④ pandas のインストールの確認</a></li></ul></li><li><a href="#toc6" tabindex="0">２．演習用プログラムのダウンロード</a><ul><li><a href="#toc7" tabindex="0">practice14.txt</a></li><li><a href="#toc8" tabindex="0">csv_file1.csv</a></li></ul></li><li><a href="#toc9" tabindex="0">３．ソースコードの表示</a></li><li><a href="#toc10" tabindex="0">４．ＣＳＶファイルの読み込み</a><ul><li><a href="#toc11" tabindex="0">① ＣＳＶファイルを読み込む</a></li><li><a href="#toc12" tabindex="0">② ２次元リスト（リストのリスト）として取得</a></li><li><a href="#toc13" tabindex="0">③ 数値にできるものだけを数値化</a></li><li><a href="#toc14" tabindex="0">④ 見出し行（ヘッダー）を取り除く</a></li><li><a href="#toc15" tabindex="0">⑤ 行、要素、列を取得</a></li></ul></li><li><a href="#toc16" tabindex="0">５．ＣＳＶファイルの書き込み</a><ul><li><a href="#toc17" tabindex="0">① ＣＳＶファイルに１行ずつ書き込む</a></li><li><a href="#toc18" tabindex="0">② ＣＳＶファイルに２次元リストを書き込む</a></li><li><a href="#toc19" tabindex="0">③ 追記モードでＣＳＶファイルに書き込む</a></li><li><a href="#toc20" tabindex="0">④ ＣＳＶファイルのデータを修正する</a></li></ul></li><li><a href="#toc21" tabindex="0">６．pandasでのＣＳＶファイルの読み書き</a><ul><li><a href="#toc22" tabindex="0">① pandasを使ったＣＳＶファイルの修正</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．pandasライブラリのインストール</span></h2>
<p>本章の最後で、pandasライブラリの紹介をします。<br />
pandas とは、データ解析を容易にする機能を提供するPythonのデータ解析ライブラリです。<br />
ＣＳＶファイルや、Excelファイルのような表形式データを扱うときにもとても便利なライブラリです。<br />
pandas を使うには、事前にインストール作業が必要です。<br />
手順を追って説明します。<br />
<!--------------------------------></p>
<h3><span id="toc2">① コマンドプロンプトを管理者として実行</span></h3>
<p>Windows画面の左下にある検索ボックスに、キーボードから cmd と入力します。<br />
右上に コマンドプロンプト が表示されていることを確認して、『管理者として実行』をクリックします。<br />
<div id="attachment_1115" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-1115" src="https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt.png" alt="" width="800" height="713" class="size-medium wp-image-1115" srcset="https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt.png 1337w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-300x267.png 300w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-1024x913.png 1024w, https://kotablog.pro/wp-content/uploads/2024/10/Start_command_prompt-768x685.png 768w" sizes="(max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1115" class="wp-caption-text">コマンドプロンプトを管理者として実行</p></div><br />
ユーザー アカウント制御 ダイアログボックスが表示されて、「このアプリがデバイスに変更を加えることを許可しますか？」と聞いてくるので、『はい』をクリックします。<br />
管理者：コマンドプロンプト が起動します。</p>
<pre class="bluerays">
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!--------------------------------></p>
<h3><span id="toc3">② インストールされているライブラリの確認</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip list と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
インストールされているライブラリの一覧が表示されます。<br />
pandas がインストールされていないことを確認します。</p>
<pre class="bluerays">
Microsoft Windows [Version 10.0.22631.4317]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\System32>pip list
Package Version
------- -------
pip     24.2
pywin32 307

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!--------------------------------></p>
<h3><span id="toc4">③ pandas のインストール</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip install pandas と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
インストールには少々時間がかかります。<br />
最後の行に『 Successfully installed 』と表示されれば、インストール完了です。</p>
<pre class="bluerays">
C:\Windows\System32>pip install pandas
Collecting pandas
  Downloading pandas-2.2.3-cp312-cp312-win_amd64.whl.metadata (19 kB)
Collecting numpy>=1.26.0 (from pandas)
  Using cached numpy-2.1.2-cp312-cp312-win_amd64.whl.metadata (59 kB)
Collecting python-dateutil>=2.8.2 (from pandas)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting pytz>=2020.1 (from pandas)
  Using cached pytz-2024.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas)
  Downloading tzdata-2024.2-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas)
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Downloading pandas-2.2.3-cp312-cp312-win_amd64.whl (11.5 MB)
   ---------------------------------------- 11.5/11.5 MB 1.4 MB/s eta 0:00:00
Using cached numpy-2.1.2-cp312-cp312-win_amd64.whl (12.6 MB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached pytz-2024.2-py2.py3-none-any.whl (508 kB)
Downloading tzdata-2024.2-py2.py3-none-any.whl (346 kB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: pytz, tzdata, six, numpy, python-dateutil, pandas
Successfully installed numpy-2.1.2 pandas-2.2.3 python-dateutil-2.9.0.post0 pytz-2024.2 six-1.16.0 tzdata-2024.2

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p>【補足】学校や会社内のパソコンをお使いの方へ<br />
pip install pandas が失敗する場合があります。<br />
この場合は、インストールする際にプロキシサーバーの情報を渡す必要があります</p>
<p>プロキシサーバーの情報は、システム管理者に確認してください。<br />
・プロキシサーバー名<br />
・ポート番号</p>
<p>プロキシサーバーの情報を取得できましたら、pandas のインストールは次のようにします。<br />
pip install --proxy="プロキシサーバー名:ポート番号" pandas</p>
<p><!--------------------------------></p>
<h3><span id="toc5">④ pandas のインストールの確認</span></h3>
<p>管理者：コマンドプロンプト でキーボードから pip list と入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
インストールされているライブラリの一覧が表示されます。<br />
一覧に pandas があることを確認します。</p>
<pre class="bluerays">
C:\Windows\System32>pip list
Package         Version
--------------- -----------
numpy           2.1.2
pandas          2.2.3
pip             24.2
python-dateutil 2.9.0.post0
pytz            2024.2
pywin32         307
six             1.16.0
tzdata          2024.2

C:\Windows\System32>
</pre>
<p>&nbsp;</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc6">２．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice14.py ）とＣＳＶファイル（ csv_file1.csv ）をダウンロードします。<br />
演習用プログラムは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice14.py、csv_file1.csv を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc7">practice14.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 5.92 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice14-txt/?wpdmdl=1107&refresh=69d8a87aa0e181775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/csv.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc8">csv_file1.csv</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 0.14 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/csv_file1-csv/?wpdmdl=1108&refresh=69d8a87aa1a491775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc9">３．ソースコードの表示</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice14.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/notepad-practice14.png" alt="practice14.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice14.py</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc10">４．ＣＳＶファイルの読み込み</span></h2>
<p>最初にＣＳＶファイルを読み込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc11">① ＣＳＶファイルを読み込む</span></h3>
<p>まずは、コマンドプロンプト で practice14.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">C:\Users\kotablog>python C:\Python\practice14.py

*** ＣＳＶファイルの読み込み ****

csv_file1.csvを読み込みます
['商品コード', '商品名', '金額']
['A0001', 'みかん', '100']
['A0002', 'メロン', '200']
['A0003', 'いちご', '300']
['A0004', 'バナナ', '400']
['A0005', 'トマト', '500']
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１４
04&emsp;
05&emsp;  ＣＳＶファイルの読み書き
06&emsp;
07&emsp;"""
08&emsp;import sys     # sysモジュールのインポート
09&emsp;import csv     # ＣＳＶファイルの読み書き用の標準ライブラリ
10&emsp;import pandas  # pandasライブラリのインポート
11&emsp;
12&emsp;print("\n*** ＣＳＶファイルの読み込み ****")
13&emsp;
14&emsp;# ＣＳＶファイルを読み込む
15&emsp;print("\ncsv_file1.csvを読み込みます")
16&emsp;file_name = r"C:\Python\csv_file1.csv"  # ファイルのフルパス名
17&emsp;with open(file_name) as f:              # ファイルを開く
18&emsp;  reader = csv.reader(f)                # ＣＳＶファイルの読み込み
19&emsp;  for row in reader:                    # 行ごとのデータをリストで取得
20&emsp;    print(row)                          # １行のデータを表示
21&emsp;
22&emsp;#終了１
23&emsp;sys.exit()
</code>
</pre>
<p>09行目で ＣＳＶファイルを読み書きするための標準ライブラリをインポートしています。<br />
10行目で 先ほどインストールした pandasライブラリをインポートしています。</p>
<p>16行目で変数 file_name に csv_file1.csv のフルパスファイル名をセットしています。<br />
17行目で with文を使って、ＣＳＶファイルを開いています。<br />
18行目で reader()メソッドを使ってＣＳＶファイルを読み込み、reader オブジェクトに格納しています。<br />
19行目の for文を使って、行ごとにデータを取り出しています。<br />
20行目で 行のデータ（リスト）を表示しています。</p>
<p><!--------------------------------></p>
<h3><span id="toc12">② ２次元リスト（リストのリスト）として取得</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
２次元リスト（リストのリスト）として取得します
[['商品コード', '商品名', '金額'], 
 ['A0001', 'みかん', '100'], 
 ['A0002', 'メロン', '200'], 
 ['A0003', 'いちご', '300'], 
 ['A0004', 'バナナ', '400'], 
 ['A0005', 'トマト', '500']]
</pre>
<p>&nbsp;<br />
※見やすくするために改行しています</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
25&emsp;# ２次元リスト（リストのリスト）として取得（リスト内包表記を使用）
26&emsp;print("\n２次元リスト（リストのリスト）として取得します")
27&emsp;with open(file_name) as f:              # ファイルを開く
28&emsp;  reader = csv.reader(f)                # ＣＳＶファイルの読み込み
29&emsp;  list2d = [row for row in reader]      # ２次元リストで取得
30&emsp;print(list2d)                           # ２次元リストを表示
31&emsp;
32&emsp;#終了２
33&emsp;sys.exit()
</code>
</pre>
<p>28行目で reader()メソッドを使ってＣＳＶファイルを読み込み、reader オブジェクトに格納しています。<br />
29行目で リスト内包表記を使って、reader オブジェクトから２次元リストとして変数 list2d に格納しています。<br />
30行目で ２次元リストを表示しています。</p>
<p><a style="text-decoration: none;" href="https://note.nkmk.me/python-list-comprehension/">Pythonリスト内包表記の使い方</a></p>
<p><!--------------------------------></p>
<h3><span id="toc13">③ 数値にできるものだけを数値化</span></h3>
<p>金額の列は数値です。数値の文字列は数値に変換しておくと便利です。</p>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
数値にできるものだけを数値化します
[['商品コード', '商品名', '金額'], 
 ['A0001', 'みかん', 100], 
 ['A0002', 'メロン', 200], 
 ['A0003', 'いちご', 300], 
 ['A0004', 'バナナ', 400], 
 ['A0005', 'トマト', 500]]
</pre>
<p>&nbsp;<br />
※見やすくするために改行しています</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
35&emsp;# 数値にできるものだけを数値化（リスト内包表記と三項演算子を使用）
36&emsp;print("\n数値にできるものだけを数値化します")
37&emsp;list2d = [[int(v) if v.isdecimal() else v for v in row ] for row in list2d]  # 数値化
38&emsp;print(list2d)                           # ２次元リストを表示
39&emsp;
40&emsp;#終了３
41&emsp;sys.exit()
</code>
</pre>
<p>37行目で リスト内包表記 と 三項演算子を使って数値にできる要素を数値に変換しています。</p>
<p>リスト内包表記<br />
[式 for 任意の変数名 in イテラブルオブジェクト]</p>
<p>三項演算子<br />
条件式が真のときに返す値 if 条件式 else 条件式が偽のときに返す値</p>
<p><!--------------------------------></p>
<h3><span id="toc14">④ 見出し行（ヘッダー）を取り除く</span></h3>
<p>見出し行を取り除いてデータだけにしておくと便利です。</p>
<p>ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
見出し行（ヘッダー）を取り除きます
[['A0001', 'みかん', 100], 
 ['A0002', 'メロン', 200], 
 ['A0003', 'いちご', 300], 
 ['A0004', 'バナナ', 400], 
 ['A0005', 'トマト', 500]]
</pre>
<p>&nbsp;<br />
※見やすくするために改行しています</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
43&emsp;# 見出し行（ヘッダー）を取り除く（リスト内包表記を使用）
44&emsp;print("\n見出し行（ヘッダー）を取り除きます")
45&emsp;list2d = [row for row in list2d[1:]]    # ヘッダーの除去
46&emsp;print(list2d)                           # ２次元リストを表示
47&emsp;
48&emsp;#終了４
49&emsp;sys.exit()
</code>
</pre>
<p>45行目で 見出し行は１行目（インデックスは 0）なので、２行目以降（インデックスは 1）で２次元リストを作成しています。（リスト内包表記）</p>
<p><!--------------------------------></p>
<h3><span id="toc15">⑤ 行、要素、列を取得</span></h3>
<p>ソースコード <b>#終了４</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
３行目を取得します
['A0003', 'いちご', 300]

３行目の２列目を取得します
いちご

３列目（金額）を取得します
[100, 200, 300, 400, 500]

金額の合計を計算します
合計は 1500 です
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
51&emsp;# 行を取得
52&emsp;print("\n３行目を取得します")
53&emsp;datalist = list2d[2]                    # 0始まりのインデックスを指定
54&emsp;print(datalist)                         # 行のリストを表示
55&emsp;
56&emsp;# 要素を取得
57&emsp;print("\n３行目の２列目を取得します")
58&emsp;data = list2d[2][1]                     # [行][列]の順で指定
59&emsp;print(data)                             # 要素を表示
60&emsp;
61&emsp;# 列を取得
62&emsp;print("\n３列目（金額）を取得します")
63&emsp;list2d_T = [list(x) for x in zip(*list2d)]  # 行と列を入れ替え
64&emsp;datalist = list2d_T[2]                  # 0始まりのインデックスを指定
65&emsp;print(datalist)
66&emsp;
67&emsp;print("\n金額の合計を計算します")
68&emsp;total = sum(datalist)                   # リストの要素の合計値を計算
69&emsp;print("合計は、" + str(total) + " です")
70&emsp;
71&emsp;#終了５
72&emsp;sys.exit()
</code>
</pre>
<p>行を取得（３行目）<br />
53行目で ２次元リスト（ list2d ）から、３行目のデータ（インデックスは 2）を取り出しています。</p>
<p>要素を取得（３行目の２列目）<br />
58行目で ２次元リスト（ list2d ）から、３行目のデータ（インデックスは 2）さらに ２列目の要素（インデックスは 1）を取り出しています。</p>
<p>列を取得（３列目の金額）<br />
列を取得するにはまず行と列を入れ替えます。<br />
63行目で リスト内包表記を使い、行と列を入れ替えて２次元リスト（ list2d_T ）に格納しています。</p>
<p>list2d_T の内容<br />
[['A0001', 'A0002', 'A0003', 'A0004', 'A0005'],<br />
 ['みかん', 'メロン', 'いちご', 'バナナ', 'トマト'],<br />
 [100, 200, 300, 400, 500]]</p>
<p>64行目で ２次元リスト（ list2d_T ）から、行と列を入れ替えているので３行目のデータ（インデックスは 2）を取り出しています。</p>
<p>金額の合計を計算<br />
68行目で sum()関数を使って金額のリストの要素を合計しています。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc16">５．ＣＳＶファイルの書き込み</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc17">① ＣＳＶファイルに１行ずつ書き込む</span></h3>
<p>ソースコード <b>#終了５</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** ＣＳＶファイルの書き込み ****

csv_file2.csvに１行ずつ書き込みます
csv_file2.csv の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、csv_file2.csv を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
74&emsp;print("\n*** ＣＳＶファイルの書き込み ****")
75&emsp;
76&emsp;# ＣＳＶファイルに１行ずつ書き込む
77&emsp;print("\ncsv_file2.csvに１行ずつ書き込みます")
78&emsp;file_name = r"C:\Python\csv_file2.csv"  # ファイルのフルパス名
79&emsp;with open(file_name, 'w', newline="") as f:  # 書き込みモードでファイルを開く
80&emsp;  writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
81&emsp;  writer.writerow(['商品コード', '商品名', '金額'])
82&emsp;  writer.writerow(['A0001', 'みかん', 100])
83&emsp;print("csv_file2.csv の内容を確認しましょう")
84&emsp;
85&emsp;#終了６
86&emsp;sys.exit()
</code>
</pre>
<p>79行目で ＣＳＶファイルを書き込みモード（ 'w' ）で開いています。<br />
このとき、引数に newline="" を指定し忘れると、行毎に空行が入ってしまいます。</p>
<p>80行目の writer()メソッドの引数 quoting は以下の通りです。<br />
・quoting=csv.QUOTE_ALL　：　すべての要素が引用符で囲まれる。<br />
・quoting=csv.QUOTE_NONNUMERIC　：　数値でない要素が引用符で囲まれる。</p>
<p>81行目と82行目の writerow()メソッドで行のデータを書き込んでいます。</p>
<p><!--------------------------------></p>
<h3><span id="toc18">② ＣＳＶファイルに２次元リストを書き込む</span></h3>
<p>ソースコード <b>#終了６</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
csv_file3.csvに２次元リストを書き込みます
csv_file3.csv の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、csv_file3.csv を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
 88&emsp;# ＣＳＶファイルに２次元リストを書き込む
 89&emsp;print("\ncsv_file3.csvに２次元リストを書き込みます")
 90&emsp;file_name = r"C:\Python\csv_file3.csv"  # ファイルのフルパス名
 91&emsp;list2d = [['商品コード', '商品名', '金額'],\
 92&emsp;          ['A0001', 'みかん', 100],\
 93&emsp;          ['A0002', 'メロン', 200],\
 94&emsp;          ['A0003', 'いちご', 300],\
 95&emsp;          ['A0004', 'バナナ', 400],\
 96&emsp;          ['A0005', 'トマト', 500]]
 97&emsp;with open(file_name, 'w', newline="") as f:  # 書き込みモードでファイルを開く
 98&emsp;  writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
 99&emsp;  writer.writerows(list2d)
100&emsp;print("csv_file3.csv の内容を確認しましょう")
101&emsp;
102&emsp;#終了７
103&emsp;sys.exit()
</code>
</pre>
<p>90行目で 変数 file_name に csv_file3.csv のフルパスファイル名をセットしています。</p>
<p>91行目から96行目で ＣＳＶファイルに書き込む２次元リストを用意しています。<br />
Pythonでは、行の末尾に \ を付けることで、コーディングを複数行に記述することができます。</p>
<p>97行目で ＣＳＶファイルを書き込みモード（ 'w' ）で開いています。<br />
引数の newline="" は、行毎に空行が入らないようにしています。</p>
<p>98行目で 数値でない要素が引用符で囲まれるように指定しています。</p>
<p>99行目の writerows()メソッドで複数行のデータを書き込んでいます。</p>
<p><!--------------------------------></p>
<h3><span id="toc19">③ 追記モードでＣＳＶファイルに書き込む</span></h3>
<p>ソースコード <b>#終了７</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
csv_file3.csvにデータを追加します
csv_file3.csv の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、csv_file3.csv を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
105&emsp;# 追記モードでＣＳＶファイルに書き込む
106&emsp;print("\ncsv_file3.csvにデータを追加します")
107&emsp;with open(file_name, 'a', newline="") as f:  # 追記モードでファイルを開く
108&emsp;  writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
109&emsp;  writer.writerow(['A0006', 'ぶどう', 600])
110&emsp;print("csv_file3.csv の内容を確認しましょう")
111&emsp;
112&emsp;#終了８
113&emsp;sys.exit()
</code>
</pre>
<p>107行目で ＣＳＶファイルを追記モード（ 'a' ）で開いています。<br />
108行目で 数値でない要素が引用符で囲まれるように指定しています。<br />
109行目の writerow()メソッドで行のデータを書き込んでいます。</p>
<p><!--------------------------------></p>
<h3><span id="toc20">④ ＣＳＶファイルのデータを修正する</span></h3>
<p>商品コード 'A0005' の商品名を 'トマト' から 'りんご' に修正します。</p>
<p>ソースコード <b>#終了８</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
csv_file3.csvのデータを修正します
csv_file3.csv の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、csv_file3.csv を開いて内容を確認してください。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
115&emsp;# ＣＳＶファイルのデータを修正する
116&emsp;print("\ncsv_file3.csvのデータを修正します")
117&emsp;with open(file_name) as f:              # ファイルを開く
118&emsp;  reader = csv.reader(f)                # ＣＳＶファイルの読み込み
119&emsp;  list2d = [row for row in reader]      # ２次元リストで取得
120&emsp;  list2d = [[int(v) if v.isdecimal() else v for v in row ] for row in list2d]  # 数値化
121&emsp;
122&emsp;for i in range(len(list2d)):
123&emsp;  datalist = list2d[i]
124&emsp;  if list2d[i][0] == "A0005":
125&emsp;    list2d[i][1] = "りんご"
126&emsp;
127&emsp;with open(file_name, 'w', newline="") as f:  # 書き込みモードでファイルを開く
128&emsp;  writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
129&emsp;  writer.writerows(list2d)
130&emsp;print("csv_file3.csv の内容を確認しましょう")
131&emsp;
132&emsp;#終了９
133&emsp;sys.exit()
</code>
</pre>
<p>117行目で csv_file3.csv を開いています。<br />
118行目から120行目で ファイルを読み込み、２次元リスト（ list2d ）に格納して、数値にできる要素を数値化しています。</p>
<p>122行目から125行目の for文で、商品コードが 'A0005' であれば 商品名を 'トマト' から 'りんご' に書き換えています。</p>
<p>127行目で ＣＳＶファイルを書き込みモード（ 'w' ）で開いています。<br />
引数の newline="" は、行毎に空行が入らないようにしています。<br />
129行目の writerows()メソッドで２次元リストのデータを書き込んでいます。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc21">６．pandasでのＣＳＶファイルの読み書き</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc22">① pandasを使ったＣＳＶファイルの修正</span></h3>
<p>pandasを使って、商品コード 'A0005' の商品名を 'りんご' から 'レモン' に修正します。</p>
<p>ソースコード <b>#終了９</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** pandasでのＣＳＶファイルの読み書き ****

csv_file3.csvのデータをpandasを使って修正します

【修正前】
   商品コード  商品名   金額
0  A0001  みかん  100
1  A0002  メロン  200
2  A0003  いちご  300
3  A0004  バナナ  400
4  A0005  りんご  500
5  A0006  ぶどう  600

【修正後】
   商品コード  商品名   金額
0  A0001  みかん  100
1  A0002  メロン  200
2  A0003  いちご  300
3  A0004  バナナ  400
4  A0005  レモン  500
5  A0006  ぶどう  600

csv_file3.csv の内容を確認しましょう
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
135&emsp;print("\n*** pandasでのＣＳＶファイルの読み書き ****")
136&emsp;
137&emsp;# pandasを使ったＣＳＶファイルの修正
138&emsp;print("\ncsv_file3.csvのデータをpandasを使って修正します")
139&emsp;df = pandas.read_csv(file_name, encoding='shift_jis')
140&emsp;print("\n【修正前】")
141&emsp;print(df)
142&emsp;
143&emsp;for index, data in df.iterrows():
144&emsp;  商品コード = str(data['商品コード'])
145&emsp;  商品名     = str(data['商品名'])
146&emsp;  if 商品コード == "A0005":
147&emsp;    df.loc[index, '商品名'] = "レモン"
148&emsp;print("\n【修正後】")
149&emsp;print(df)
150&emsp;
151&emsp;df.to_csv(file_name, encoding='shift_jis', index=False)
152&emsp;print("\ncsv_file3.csv の内容を確認しましょう")
153&emsp;
154&emsp;sys.exit()
</code>
</pre>
<p>139行目で pandasの read_csv()メソッドで csv_file3.csv を読み込んで、データフレーム（ df ）にセットしています。<br />
143行目から147行目の for文で、商品コードが 'A0005' であれば 商品名を 'レモン' に書き換えています。<br />
151行目で pandasの to_csv()メソッドで csv_file3.csv に書き込んでいます。</p>
<p>pandasを使った方が、コーディングが簡潔になります。</p>
<p>pandasについては、別章で詳しく解説します。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-textfile/">＜テキストファイルの読み書き</a>
</td>
<td class="fgcenter">
ＣＳＶファイルの読み書き
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-xlwings-excelfile/">xlwingsを使った Excelファイルの読み書き＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-operation-csvfile/">ＣＳＶファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>テキストファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</title>
		<link>https://kotablog.pro/python-operation-textfile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-operation-textfile</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 15:40:41 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1097</guid>

					<description><![CDATA[<p>Pythonでテキストファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．演習用プログラムとテキストファイルのダウンロード２．ソースコードの表示３．テキストファイ [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-operation-textfile/">テキストファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonでテキストファイルを読み書きする方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．演習用プログラムとテキストファイルのダウンロード</a><ul><li><a href="#toc2" tabindex="0">practice13.txt</a></li><li><a href="#toc3" tabindex="0">text_file1.txt</a></li><li><a href="#toc4" tabindex="0">text_file2.txt</a></li></ul></li><li><a href="#toc5" tabindex="0">２．ソースコードの表示</a></li><li><a href="#toc6" tabindex="0">３．テキストファイルの読み込み</a><ul><li><a href="#toc7" tabindex="0">① ファイル全体を読み込む</a></li><li><a href="#toc8" tabindex="0">② 文字エンコーディングを指定する</a></li><li><a href="#toc9" tabindex="0">③ with文でコーディングする</a></li><li><a href="#toc10" tabindex="0">④ １行毎に読み込む</a></li><li><a href="#toc11" tabindex="0">⑤ 改行文字を取り除く</a></li></ul></li><li><a href="#toc12" tabindex="0">４．テキストファイルの書き込み</a><ul><li><a href="#toc13" tabindex="0">① 書き込みモードでファイルに書き込む</a></li><li><a href="#toc14" tabindex="0">② リストのデータをファイルに書き込む</a></li><li><a href="#toc15" tabindex="0">③ リストの要素ごとに改行を入れる</a></li><li><a href="#toc16" tabindex="0">④ 追記モードでファイルに書き込む</a></li><li><a href="#toc17" tabindex="0">⑤ １行を書き換える</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．演習用プログラムとテキストファイルのダウンロード</span></h2>
<p>演習用プログラム（ practice13.py ）とテキストファイル（ text_file1.txt、text_file2.txt ）をダウンロードします。<br />
演習用プログラムは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice13.py、text_file1.txt、text_file2.txt を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc2">practice13.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 4.89 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice13-txt/?wpdmdl=1094&refresh=69d8a87aa5af01775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc3">text_file1.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 0.03 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/text_file1-txt/?wpdmdl=1095&refresh=69d8a87aa64271775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc4">text_file2.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 0.15 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/text_file2-txt/?wpdmdl=1096&refresh=69d8a87aa6d3f1775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc5">２．ソースコードの表示</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice13.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/10/notepad-practice13.png" alt="practice13.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice13.py</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc6">３．テキストファイルの読み込み</span></h2>
<p><!--------------------------------><br />
最初にテキストファイルを読み込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc7">① ファイル全体を読み込む</span></h3>
<p>まずは、コマンドプロンプト で practice13.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">C:\Users\kotablog>python C:\Python\practice13.py

*** テキストファイルの読み込み ****

text_file1.txtのファイル全体を読み込みます
札幌
東京
名古屋
大阪
福岡
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１３
04&emsp;
05&emsp;  テキストファイルの読み書き
06&emsp;
07&emsp;"""
08&emsp;import sys  # sysモジュールのインポート
09&emsp;
10&emsp;print("\n*** テキストファイルの読み込み ****")
11&emsp;
12&emsp;# ファイル全体を読み込む
13&emsp;print("\ntext_file1.txtのファイル全体を読み込みます")
14&emsp;file_name1 = r"C:\Python\text_file1.txt"  # ファイルのフルパス名
15&emsp;f = open(file_name1, 'r')                 # 読み込みモードでファイルを開く
16&emsp;data = f.read()                           # ファイル終端まで全て読み込む
17&emsp;f.close()                                 # ファイルを閉じる
18&emsp;print(data)
19&emsp;
20&emsp;#終了１
21&emsp;sys.exit()
</code>
</pre>
<p>14行目で 変数 file_name1 に text_file1.txt のフルパスファイル名をセットしています。<br />
15行目で テキストファイルを読み込みモード（ 'r' ）で開いています。<br />
16行目で テキストファイルの先頭から終端まで全て読み込んでいます。<br />
17行目の close()メソッドで必ずファイルを閉じます。<br />
18行目で 読み込んだ内容を表示しています。</p>
<p>【確認作業】開くファイルが存在しない場合を確認します。<br />
14行目のファイル名 text_file1.txt を text_file0.txt に修正します。</p>
<p><span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">C:\Users\kotablog>C:\Python\practice13.py

*** テキストファイルの読み込み ****

text_file1.txtのファイル全体を読み込みます
Traceback (most recent call last):
  File "C:\Python\practice13.py", line 15, in <module>
    f = open(file_name1, 'r')                 # 読み込みモードでファイルを開く
        ^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Python\\text_file0.txt'
</pre>
<p>&nbsp;<br />
15行目でテキストファイルを開くときに FileNotFoundError: [Errno 2] となりました。<br />
エラーメッセージは、『そのようなファイル、又はディレクトリはありません』です。</p>
<p>忘れないように<br />
14行目のファイル名 text_file0.txt を text_file1.txt に戻します。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。</p>
<p><!--------------------------------></p>
<h3><span id="toc8">② 文字エンコーディングを指定する</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
text_file2.txtのファイル全体を読み込みます
Traceback (most recent call last):
  File "C:\Python\practice13.py", line 28, in <module>
    data = f.read()                           # ファイル終端まで全て読み込む
           ^^^^^^^^
UnicodeDecodeError: 'cp932' codec can't decode byte 0x83 in position 19: illegal multibyte sequence
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
23&emsp;# 文字エンコーディングを指定する
24&emsp;print("text_file2.txtのファイル全体を読み込みます")
25&emsp;file_name2 = r"C:\Python\text_file2.txt"  # ファイルのフルパス名
26&emsp;f = open(file_name2, 'r')                 # 読み込みモードでファイルを開く
27&emsp;#f = open(file_name2, 'r', encoding='UTF-8')  # 読み込みモードでファイルを開く
28&emsp;data = f.read()                           # ファイル終端まで全て読み込む
29&emsp;f.close()                                 # ファイルを閉じる
30&emsp;print(data)
31&emsp;
32&emsp;#終了２
33&emsp;sys.exit()
</code>
</pre>
<p>28行目の read()メソッドでファイルを読み込むときに<br />
UnicodeDecodeError となりました。<br />
text_file2.txt の文字エンコーディングは、UTF-8 です<br />
よって、26行目の open()メソッドの引数 encoding で UTF-8 を指定する必要があります。</p>
<p>26行目の先頭に「 # 」を入れてコメントにします。<br />
27行目の先頭の「 # 」を削除します。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
text_file2.txtのファイル全体を読み込みます
アメリカの首都:New York
イギリスの首都:London
イタリアの首都:Roma
スペインの首都:Madrid
フランスの首都:Paris
</pre>
<p>&nbsp;<br />
text_file2.txt の内容を表示することができました。<br />
アメリカの首都が誤っていますが、この後で修正します。</p>
<p><!--------------------------------></p>
<h3><span id="toc9">③ with文でコーディングする</span></h3>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
with文でコーディングする
札幌
東京
名古屋
大阪
福岡
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
35&emsp;# with文でコーディングする
36&emsp;print("with文でコーディングする")
37&emsp;with open(file_name1, 'r') as f:          # 読み込みモードでファイルを開く
38&emsp;  data = f.read()                         # ファイル終端まで全て読み込む
39&emsp;print(data)
40&emsp;
41&emsp;#終了３
42&emsp;sys.exit()
</code>
</pre>
<p>open() で開いたファイルを、最後に close() し忘れると、ファイルが開いたままになってしまいます。<br />
これを防ぐために、with文を使います。</p>
<p><!--------------------------------></p>
<h3><span id="toc10">④ １行毎に読み込む</span></h3>
<p>ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１行毎に読み込む（リストに格納）
['札幌\n', '東京\n', '名古屋\n', '大阪\n', '福岡\n']
</pre>
<p>&nbsp;<br />
各データの後ろに改行文字（ \n ）が付いています。<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
44&emsp;# １行毎に読み込む
45&emsp;print("１行毎に読み込む（リストに格納）")
46&emsp;with open(file_name1, 'r') as f:          # 読み込みモードでファイルを開く
47&emsp;  datalist = f.readlines()                # 行単位で読み込む
48&emsp;print(datalist)
49&emsp;
50&emsp;#終了４
51&emsp;sys.exit()
</code>
</pre>
<p>47行目の readlines()メソッドで、テキストファイル内の１行毎にリストに格納しています。<br />
readlines()メソッドを使うと、改行文字（ \n ）を含んでリストに格納されます。<br />
データを処理するには、改行文字が無いほうが便利です。<br />
次に、改行文字を取り除く方法を見ていきます。</p>
<p><!--------------------------------></p>
<h3><span id="toc11">⑤ 改行文字を取り除く</span></h3>
<p>ソースコード <b>#終了４</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
改行文字を取り除く
['札幌', '東京', '名古屋', '大阪', '福岡']
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
53&emsp;# 改行文字を取り除く
54&emsp;print("\n改行文字を取り除く")
55&emsp;with open(file_name1, 'r') as f:          # 読み込みモードでファイルを開く
56&emsp;  data = f.read()                         # ファイル終端まで全て読み込む
57&emsp;  datalist = data.splitlines()            # 文字列を改行で分割
58&emsp;print(datalist)
59&emsp;
60&emsp;#終了５
61&emsp;sys.exit()
</code>
</pre>
<p>改行文字が入らないようにするには、<br />
57行目の read()メソッド でファイル全体を読み込んでから、<br />
58行目の splitlines()メソッド で改行文字で分割してリストに格納します。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc12">４．テキストファイルの書き込み</span></h2>
<p><!--------------------------------><br />
次にテキストファイルにデータを書き込む方法を見ていきます。<br />
<!--------------------------------></p>
<h3><span id="toc13">① 書き込みモードでファイルに書き込む</span></h3>
<p>ソースコード <b>#終了５</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** テキストファイルの書き込み ****

"那覇"をファイルに書き込みます
text_file1.txt の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、text_file1.txt を開いて内容を確認してください。<br />
那覇 だけになっています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
63&emsp;print("\n*** テキストファイルの書き込み ****")
64&emsp;
65&emsp;# 書き込みモードでファイルに書き込む
66&emsp;print("\n\"那覇\"をファイルに書き込みます")
67&emsp;with open(file_name1, 'w') as f:          # 書き込みモードでファイルを開く
68&emsp;  f.write("那覇")                         # データを書き込む
69&emsp;print("text_file1.txt の内容を確認しましょう")
70&emsp;
71&emsp;#終了６
72&emsp;sys.exit()
</code>
</pre>
<p>67行目で テキストファイルを書き込みモード（ 'w' ）で開いています。<br />
68行目の write()メソッドで "那覇" を書き込んでいます。<br />
書き込みモード（ 'w' ）では、対象ファイルが存在する場合、ファイルの中身が新しい文字列（今回は "那覇"）で書き換えらます。<br />
また、書き込みの処理がなくても、ファイルを開いた直後に中身が空になるので気をつけましょう。</p>
<p><!--------------------------------></p>
<h3><span id="toc14">② リストのデータをファイルに書き込む</span></h3>
<p>ソースコード <b>#終了６</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
リストのデータをファイルに書き込みます
text_file1.txt の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、text_file1.txt を開いて内容を確認してください。<br />
データが連結されて１行で書かれています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
74&emsp;# リストのデータをファイルに書き込む
75&emsp;print("\nリストのデータをファイルに書き込みます")
76&emsp;datalist = ['札幌', '東京', '名古屋', '大阪', '福岡']
77&emsp;with open(file_name1, 'w') as f:          # 書き込みモードでファイルを開く
78&emsp;  f.writelines(datalist)                  # リストのデータを書き込む
79&emsp;print("text_file1.txt の内容を確認しましょう")
80&emsp;
81&emsp;#終了７
82&emsp;sys.exit()
</code>
</pre>
<p>78行目の writelines()メソッド は改行文字を入れてくれないので、リストの要素が連結されてファイルに書き込まれます。</p>
<p><!--------------------------------></p>
<h3><span id="toc15">③ リストの要素ごとに改行を入れる</span></h3>
<p>ソースコード <b>#終了７</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
リストの要素ごとに改行を入れます
text_file1.txt の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、text_file1.txt を開いて内容を確認してください。<br />
リストの要素が改行されてファイルに書き込まれています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
84&emsp;# リストの要素ごとに改行を入れる
85&emsp;print("\nリストの要素ごとに改行を入れます")
86&emsp;with open(file_name1, 'w') as f:          # 書き込みモードでファイルを開く
87&emsp;  f.write("\n".join(datalist))            # 改行文字でリストの要素を連結した文字列を書き込む
88&emsp;  f.write("\n")                           # 最後の要素の後ろには改行文字を書き込む
89&emsp;print("text_file1.txt の内容を確認しましょう")
90&emsp;
91&emsp;#終了８
92&emsp;sys.exit()
</code>
</pre>
<p>87行目の join()メソッド を使い、改行文字（ \n ）でリストの要素を連結した文字列を書き込んでいます。<br />
88行目は、最後の要素の後ろには改行文字が付かないので、ここで改行文字だけを書き込んでいます。</p>
<p><!--------------------------------></p>
<h3><span id="toc16">④ 追記モードでファイルに書き込む</span></h3>
<p>ソースコード <b>#終了８</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
"那覇"をファイルの末尾に書き込みます
text_file1.txt の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、text_file1.txt を開いて内容を確認してください。<br />
テキストファイルの末尾に "那覇" が追加されています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
 94&emsp;# 追記モードでファイルに書き込む
 95&emsp;print("\n\"那覇\"をファイルの末尾に書き込みます")
 96&emsp;with open(file_name1, 'a') as f:          # 追記モードでファイルを開く
 97&emsp;  f.write("那覇" + "\n")                  # データを書き込む
 98&emsp;print("text_file1.txt の内容を確認しましょう")
 99&emsp;
100&emsp;#終了９
101&emsp;sys.exit()
</code>
</pre>
<p>96行目で テキストファイルを追記モード（ 'a' ）で開いています。<br />
97行目の write()メソッドで "那覇" の後ろに改行文字を付けて書き込んでいます。</p>
<p><!--------------------------------></p>
<h3><span id="toc17">⑤ １行を書き換える</span></h3>
<p>最後に、text_file2.txt で、アメリカの首都:New York となっているので、正しい首都に書き換えを行います。<br />
ソースコード <b>#終了９</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１行を書き換えます
text_file2.txt の内容を確認しましょう
</pre>
<p>&nbsp;<br />
エクスプローラから、text_file2.txt を開いて内容を確認してください。<br />
アメリカの首都が "New York" から "Washington" に書き換わっています。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
103&emsp;# １行を書き換える
104&emsp;print("\n１行を書き換えます")
105&emsp;with open(file_name2, 'r', encoding='UTF-8') as f:  # 読み込みモードでファイルを開く
106&emsp;  data = f.read()                                   # ファイル終端まで全て読み込む
107&emsp;  datalist = data.splitlines()                      # 文字列を改行で分割
108&emsp;
109&emsp;for i in range(len(datalist)):                      # １行ずつ取得する
110&emsp;  if "New York" in datalist[i]:                     # 行に "New York" が含まれる場合
111&emsp;    datalist[i] = datalist[i].replace('New York', 'Washington')
112&emsp;
113&emsp;with open(file_name2, 'w', encoding='UTF-8') as f:  # 書き込みモードでファイルを開く
114&emsp;  f.write("\n".join(datalist))                      # 改行コードでリストの要素を連結した文字列を書き込む
115&emsp;  f.write("\n")                                     # 最後の要素の後ろには改行コードを書き込む
116&emsp;
117&emsp;print("text_file2.txt の内容を確認しましょう")
118&emsp;
119&emsp;sys.exit()
</code>
</pre>
<p>106行目で、text_file2.txt の内容を全て読み込んでいます。<br />
107行目の splitlines()メソッド で改行文字で分割して、１行毎にリスト（ datalist ）に格納しています。</p>
<p>109行目の for文 で１行ずつ確認していきます。<br />
もし、"New York" が行に含まれるなら（110行目）、<br />
111行目で "New York" を "Washington" に置き換えています。</p>
<p>113行目で text_file2.txt を書き込みモード（ 'w' ）で開いています。<br />
114行目の join()メソッド を使い、改行文字（ \n ）でリスト（ datalist ）の要素を連結した文字列を書き込んでいます。<br />
115行目の write()メソッドで、最後の行の末尾に改行文字を付けて書き込んでいます。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-exception-handling/">＜例外処理</a>
</td>
<td class="fgcenter">
テキストファイルの読み書き
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-csvfile/">ＣＳＶファイルの読み書き＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-operation-textfile/">テキストファイルの読み書き – 【Pythonプログラミング２ ～応用編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>例外処理 – 【Pythonプログラミング１ ～基礎編～】</title>
		<link>https://kotablog.pro/python-exception-handling/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-exception-handling</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Sun, 08 Sep 2024 19:51:41 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1081</guid>

					<description><![CDATA[<p>Pythonの例外処理を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．演習用プログラムのダウンロード２．ソースコードの表示３．例外処理① 例外処理の無いコーディング② 例外処理 ～ V [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-exception-handling/">例外処理 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonの例外処理を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．演習用プログラムのダウンロード</a><ul><li><a href="#toc2" tabindex="0">practice12.txt</a></li></ul></li><li><a href="#toc3" tabindex="0">２．ソースコードの表示</a></li><li><a href="#toc4" tabindex="0">３．例外処理</a><ul><li><a href="#toc5" tabindex="0">① 例外処理の無いコーディング</a></li><li><a href="#toc6" tabindex="0">② 例外処理 ～ ValueError に対応する ～</a></li><li><a href="#toc7" tabindex="0">③ 例外処理 ～ ZeroDivisionError の対応を追加する ～</a></li><li><a href="#toc8" tabindex="0">④ while文を使って正しい入力があるまで繰り返す</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice12.py ）をダウンロードします。<br />
ダウンロードファイルは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice12.py を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc2">practice12.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 2.44 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice12-txt/?wpdmdl=1060&refresh=69d8a87aaa36e1775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc3">２．ソースコードの表示</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice12.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/09/notepad-practice12.png" alt="practice12.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice12.py</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc4">３．例外処理</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc5">① 例外処理の無いコーディング</span></h3>
<p>まずは、コマンドプロンプト で practice12.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
C:\Users\kotablog>python "C:\Python\practice12.py"

１００を入力した数値で割り算します
キーボードから入力してください>>>
</pre>
<p>&nbsp;<br />
キーボードから 2 を入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>> 2
100 ÷ 2 = 50.0
処理は正常終了しました
</pre>
<p>&nbsp;<br />
もう一度、 practice12.py を実行します。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>>
</pre>
<p>&nbsp;<br />
次はキーボードから a を入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のようにエラーが表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>> a
Traceback (most recent call last):
  File "D:\Program Files\Python\practice12.py", line 14, in <module>
    input_value = int(str_input)  # 入力された値を数値に変換
ValueError: invalid literal for int() with base 10: 'a'
</pre>
<p>&nbsp;<br />
このエラー（ ValueError ）の原因は、<br />
14行目の、関数 int() で、入力された文字が数値に変換できなかったからです。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１２
04&emsp;
05&emsp;  例外処理
06&emsp;
07&emsp;"""
08&emsp;import sys     # モジュールのインポート
09&emsp;str_input = 2  # 初期値を設定
10&emsp;
11&emsp;# 例外処理の無いコーディング
12&emsp;print("\n１００を入力した数値で割り算します")
13&emsp;str_input   = input('キーボードから入力してください>>> ')
14&emsp;input_value = int(str_input)  # 入力された値を数値に変換
15&emsp;result = 100 / input_value    # 割り算
16&emsp;print("100 ÷ " + str(input_value) + " = " + str(result))
17&emsp;print("処理は正常終了しました")
18&emsp;
19&emsp;#終了１
20&emsp;sys.exit()
</code>
</pre>
<p>例外処理とは</p>
<p>例外（Exception）とは、プログラムの実行中に発生する予期しないエラーのことです。<br />
例外エラーが発生すると、その時点で処理が終了してしまいます。<br />
よって、エラーの原因をプログラム利用者に伝えたり、エラーの状況を記録したりする処理などが例外処理です。</p>
<p>例外処理 の構文</p>
<div class="primary-box">
<span class="red"><b>try:</b></span><br />
<span class="badge badge-red">インデント</span> <b>エラーが発生する可能性のある処理</b><br />
<span class="red"><b>except</b></span> <b>エラーの種類</b> <span class="red"><b>:</b></span><br />
<span class="badge badge-red">インデント</span> <b>例外が発生したときの処理</b>
</div>
<p><!--------------------------------></p>
<h3><span id="toc6">② 例外処理 ～ ValueError に対応する ～</span></h3>
<p>ソースコード 13行目の先頭に「 # 」を入れてコメントにします。（ 関数 input() を動作させなくします）<br />
さらに <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>>
</pre>
<p>&nbsp;<br />
キーボードから a を入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>> a
Error：数値を入力してください
</pre>
<p>&nbsp;<br />
エラーが表示されることなく処理が終了しました。</p>
<pre class="bluerayscode">
<code>
22&emsp;# 例外処理 ～ ValueError に対応する ～
23&emsp;print("\n１００を入力した数値で割り算します")
24&emsp;str_input = input('キーボードから入力してください>>> ')
25&emsp;try:
26&emsp;  input_value = int(str_input)  # 入力された値を数値に変換
27&emsp;  result = 100 / input_value    # 割り算
28&emsp;  print("100 ÷ " + str(input_value) + " = " + str(result))
29&emsp;  print("処理は正常終了しました")
30&emsp;
31&emsp;except ValueError:
32&emsp;  print("Error：数値を入力してください")
33&emsp;
34&emsp;#終了２
35&emsp;sys.exit()
</code>
</pre>
<p>31行目、32行目に、ValueError が発生した時の例外処理が書かれています。</p>
<p>もう一度、 practice12.py を実行します。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>>
</pre>
<p>&nbsp;<br />
次はキーボードから 0（ゼロ）を入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のようにエラーが表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>> 0
Traceback (most recent call last):
  File "D:\Program Files\Python\practice12.py", line 27, in <module>
    result = 100 / input_value    # 割り算
ZeroDivisionError: division by zero
</pre>
<p>&nbsp;<br />
このエラー（ ZeroDivisionError ）の原因は、<br />
27行目で、100 を 0 で割ろうとしたからです。</p>
<p><!--------------------------------></p>
<h3><span id="toc7">③ 例外処理 ～ ZeroDivisionError の対応を追加する ～</span></h3>
<p>ソースコード 24行目の先頭に「 # 」を入れてコメントにします。（ 関数 input() を動作させなくします）<br />
さらに <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>>
</pre>
<p>&nbsp;<br />
キーボードから 0（ゼロ）を入力して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>> 0
Error：ゼロは入力できません
</pre>
<p>&nbsp;<br />
エラーが表示されることなく処理が終了しました。</p>
<pre class="bluerayscode">
<code>
37&emsp;# 例外処理 ～ ZeroDivisionError の対応を追加する ～
38&emsp;print("\n１００を入力した数値で割り算します")
39&emsp;str_input = input('キーボードから入力してください>>> ')
40&emsp;try:
41&emsp;  input_value = int(str_input)  # 入力された値を数値に変換
42&emsp;  result = 100 / input_value    # 割り算
43&emsp;  print("100 ÷ " + str(input_value) + " = " + str(result))
44&emsp;  print("処理は正常終了しました")
45&emsp;
46&emsp;except ValueError:
47&emsp;  print("Error：数値を入力してください")
48&emsp;
49&emsp;except ZeroDivisionError:
50&emsp;  print("Error：ゼロは入力できません")
51&emsp;
52&emsp;#終了３
53&emsp;sys.exit()
</code>
</pre>
<p>49行目、50行目に、ZeroDivisionError が発生した時の例外処理が書かれています。</p>
<p><!--------------------------------></p>
<h3><span id="toc8">④ while文を使って正しい入力があるまで繰り返す</span></h3>
<p>ソースコード 39行目の先頭に「 # 」を入れてコメントにします。（ 関数 input() を動作させなくします）<br />
さらに <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
１００を入力した数値で割り算します
キーボードから入力してください>>>
</pre>
<p>&nbsp;<br />
色々な入力をして、動作を確認してください。<br />
<span class="keyboard-key"> z </span> を入力して、<span class="keyboard-key"> Enter </span> キーを押下するとプログラムが終了します。</p>
<pre class="bluerayscode">
<code>
55&emsp;# while文を使って正しい入力があるまで繰り返す
56&emsp;print("\n１００を入力した数値で割り算します")
57&emsp;bLoop = True
58&emsp;while bLoop:
59&emsp;  str_input = input('キーボードから入力してください>>> ')
60&emsp;  if str_input == "z":            # "z"の入力でwhile文から抜ける
61&emsp;    break
62&emsp;  try:
63&emsp;    input_value = int(str_input)  # 入力された値を数値に変換
64&emsp;    result = 100 / input_value    # 割り算
65&emsp;    print("100 ÷ " + str(input_value) + " = " + str(result))
66&emsp;    print("処理は正常終了しました")
67&emsp;    bLoop = False
68&emsp;
69&emsp;  except ValueError:
70&emsp;    print("Error：数値を入力してください\n")
71&emsp;
72&emsp;  except ZeroDivisionError as e:
73&emsp;    print(f"エラーが発生しました: {e}\n")
74&emsp;
75&emsp;sys.exit()
</code>
</pre>
<p>72行目で、ZeroDivisionError を 変数 e に割り当てています。<br />
変数 e（エラーオブジェクト）にはエラーに関連する詳細情報が含まれていますので、<br />
73行目で、ZeroDivisionError のエラーメッセージを表示しています。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-repeated-sentence/">＜繰り返し文（for文、while文）</a>
</td>
<td class="fgcenter">
例外処理
</td>
<td class="fgright">
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-exception-handling/">例外処理 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>日時の操作 – 【Pythonプログラミング１ ～基礎編～】</title>
		<link>https://kotablog.pro/python-operation-datetime/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-operation-datetime</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Sun, 08 Sep 2024 19:47:24 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1074</guid>

					<description><![CDATA[<p>Pythonの日付と時間の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．演習用プログラムのダウンロード２．ソースコードの表示３．日時の操作① 現在日時を取得する② 任意 [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-operation-datetime/">日時の操作 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonの日付と時間の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．演習用プログラムのダウンロード</a><ul><li><a href="#toc2" tabindex="0">practice09.txt</a></li></ul></li><li><a href="#toc3" tabindex="0">２．ソースコードの表示</a></li><li><a href="#toc4" tabindex="0">３．日時の操作</a><ul><li><a href="#toc5" tabindex="0">① 現在日時を取得する</a></li><li><a href="#toc6" tabindex="0">② 任意の日付と日時を設定する</a></li><li><a href="#toc7" tabindex="0">③ 現在日時の年、月、日、時、分、秒の部分を取得する</a></li><li><a href="#toc8" tabindex="0">④ 日時を任意のフォーマットに変換する</a></li><li><a href="#toc9" tabindex="0">⑤ strptime()で任意の日時を設定する</a></li><li><a href="#toc10" tabindex="0">⑥ 経過時間を算出する</a></li><li><a href="#toc11" tabindex="0">⑦ 来月の初日、今月の月末日を算出する</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice09.py ）をダウンロードします。<br />
ダウンロードファイルは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice09.py を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc2">practice09.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 2.65 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice09-txt/?wpdmdl=1057&refresh=69d8a87aad2cd1775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc3">２．ソースコードの表示</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice09.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/09/notepad-practice09.png" alt="practice09.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice09.py</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc4">３．日時の操作</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc5">① 現在日時を取得する</span></h3>
<p>コマンドプロンプト で practice09.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
C:\Users\kotablog>python "C:\Python\practice09.py"

*** 現在日時を取得する ***
2024-07-14 10:30:56.773701
</pre>
<p>&nbsp;<br />
日付や時間を扱うには、datetime モジュールを使うと便利です。</p>
<p>現在日時を取得するには、datetime モジュールの 関数 now() を使います。<br />
しかし、年と月、月と日の区切り文字に『 - 』ハイフンで区切られているし、１秒未満の時間も表示されてしまいます。<br />
これを変更する方法は、《④日時を任意のフォーマットに変換する》で学びます。</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム９
04&emsp;
05&emsp;  日時の操作
06&emsp;
07&emsp;"""
08&emsp;import sys       # モジュールのインポート
09&emsp;import datetime
10&emsp;
11&emsp;# 現在日時を取得する
12&emsp;print("\n*** 現在日時を取得する ***")
13&emsp;dtNow = datetime.datetime.now()
14&emsp;print(dtNow)
15&emsp;
16&emsp;#終了１
17&emsp;sys.exit()
</code>
</pre>
<p>09行目で、datetime モジュールをインポートしています。<br />
13行目で、関数 now() を使って現在日時を取得しています。</p>
<p><!--------------------------------></p>
<h3><span id="toc6">② 任意の日付と日時を設定する</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 任意の日付を設定する ***
2024-07-14 00:00:00

*** 任意の日時を設定する ***
2024-08-28 07:30:15
</pre>
<p>&nbsp;<br />
任意の日付や日時を設定するには、datetime オブジェクトのコンストラクタを使います。</p>
<pre class="bluerayscode">
<code>
19&emsp;# 任意の日付と日時を設定する
20&emsp;print("\n*** 任意の日付を設定する ***")
21&emsp;dt1 = datetime.datetime(2024, 7, 14)
22&emsp;print(dt1)
23&emsp;
24&emsp;print("\n*** 任意の日時を設定する ***")
25&emsp;dt2 = datetime.datetime(2024, 8, 28, 7, 30, 15)
26&emsp;print(dt2)
27&emsp;
28&emsp;#終了２
29&emsp;sys.exit()
</code>
</pre>
<p>21行目で、年・月・日を指定して、変数 dt1 を作成しています。<br />
このとき、時・分・秒を省略すると、00:00:00 になります。<br />
25行目で、年・月・日・時・分・秒を指定して、変数 dt2 を作成しています。</p>
<p><!--------------------------------></p>
<h3><span id="toc7">③ 現在日時の年、月、日、時、分、秒の部分を取得する</span></h3>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 現在日時の年の部分を取得する ***
2024

*** 現在日時の月の部分を取得する ***
7

*** 現在日時の日の部分を取得する ***
14

*** 現在日時の時の部分を取得する ***
10

*** 現在日時の分の部分を取得する ***
30

*** 現在日時の秒の部分を取得する ***
56
</pre>
<p>&nbsp;<br />
日時の各部分（年、月、日、時、分、秒）は、datetime オブジェクトの属性値を参照することで取得できます。</p>
<pre class="bluerayscode">
<code>
31&emsp;print("\n*** 現在日時の年の部分を取得する ***")
32&emsp;print(dtNow.year)
33&emsp;
34&emsp;print("\n*** 現在日時の月の部分を取得する ***")
35&emsp;print(dtNow.month)
36&emsp;
37&emsp;print("\n*** 現在日時の日の部分を取得する ***")
38&emsp;print(dtNow.day)
39&emsp;
40&emsp;print("\n*** 現在日時の時の部分を取得する ***")
41&emsp;print(dtNow.hour)
42&emsp;
43&emsp;print("\n*** 現在日時の分の部分を取得する ***")
44&emsp;print(dtNow.minute)
45&emsp;
46&emsp;print("\n*** 現在日時の秒の部分を取得する ***")
47&emsp;print(dtNow.second)
48&emsp;
49&emsp;#終了３
50&emsp;sys.exit()
</code>
</pre>
<p><!--------------------------------></p>
<h3><span id="toc8">④ 日時を任意のフォーマットに変換する</span></h3>
<p>ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 日時を任意のフォーマットに変換する ***
2024/09/07 18:03

*** 日時を任意のフォーマットに変換する(日本語使用) ***
2024年09月07日(土) 18時03分
</pre>
<p>&nbsp;<br />
日時を任意のフォーマットに変換するには、関数 strftime() を使います。<br />
フォーマットで使う書式コードは以下の通りです。<br />
%Y: 0埋めした10進数で表記した西暦4桁<br />
%y: 0埋めした10進数で表記した西暦の下2桁<br />
%m: 0埋めした10進数で表記した月<br />
%d: 0埋めした10進数で表記した日<br />
%H: 0埋めした10進数で表記した時（24時間表記）<br />
%I: 0埋めした10進数で表記した時（12時間表記）<br />
%M: 0埋めした10進数で表記した分<br />
%S: 0埋めした10進数で表記した秒</p>
<p>《Windows》<br />
%#m: 0埋めしない10進数で表記した月<br />
%#d: 0埋めしない10進数で表記した日<br />
%#H: 0埋めしない10進数で表記した時（24時間表記）<br />
%#M: 0埋めしない10進数で表記した分<br />
%#S: 0埋めしない10進数で表記した秒</p>
<p>《Linux/MacOS》<br />
%-m: 0埋めしない10進数で表記した月<br />
%-d: 0埋めしない10進数で表記した日<br />
%-H: 0埋めしない10進数で表記した時（24時間表記）<br />
%-M: 0埋めしない10進数で表記した分<br />
%-S: 0埋めしない10進数で表記した秒</p>
<p>%f: 0埋めした10進数で表記したマイクロ秒（6桁）<br />
%A: ロケールの曜日名<br />
%a: ロケールの曜日名（短縮形）<br />
%B: ロケールの月名<br />
%b: ロケールの月名（短縮形）<br />
%j: 0埋めした10進数で表記した年中の日にち（正月が'001'）<br />
%U: 0埋めした10進数で表記した年中の週番号 （週の始まりは日曜日）<br />
%W: 0埋めした10進数で表記した年中の週番号 （週の始まりは月曜日）</p>
<pre class="bluerayscode">
<code>
52&emsp;print("\n*** 日時を任意のフォーマットに変換する ***")
53&emsp;strdt = dtNow.strftime("%Y/%m/%d %H:%M")
54&emsp;print(strdt)
55&emsp;
56&emsp;print("\n*** 日時を任意のフォーマットに変換する(日本語使用) ***")
57&emsp;import locale  # モジュールのインポート
58&emsp;locale.setlocale(locale.LC_ALL, '')  # strftimeで日本語を使う場合に必要
59&emsp;strdt = dtNow.strftime("%Y年%m月%d日(%a) %H時%M分")
60&emsp;print(strdt)
61&emsp;
62&emsp;#終了４
63&emsp;sys.exit()
</code>
</pre>
<p>53行目で、現在日時を、年、月、日、時、分にフォーマット変換しています。<br />
フォーマットに日本語を使用する場合は、locale モジュールを使って（57行目）、<br />
関数 setlocale() で事前の設定が必要になります。（58行目）</p>
<p><!--------------------------------></p>
<h3><span id="toc9">⑤ strptime()で任意の日時を設定する</span></h3>
<p>ソースコード <b>#終了４</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** strptime()で任意の日時を設定する ***
2024-08-28 07:30:15
</pre>
<p>&nbsp;<br />
関数 strptime() では、日時のデータとフォーマットの書式コードを使って、任意の日時を設定することができます。<br />
日時のデータとフォーマットの書式コードは一致させてください。</p>
<pre class="bluerayscode">
<code>
65&emsp;print("\n*** strptime()で任意の日時を設定する ***")
66&emsp;strDate   = '2024/8/28 7:30:15'
67&emsp;strFormat = '%Y/%m/%d %H:%M:%S'
68&emsp;dt2 = datetime.datetime.strptime(strDate, strFormat)
69&emsp;print(dt2)
70&emsp;
71&emsp;#終了５
72&emsp;sys.exit()
</code>
</pre>
<p>66行目で、日時のデータを設定。<br />
67行目で、フォーマットの書式コードを設定。<br />
68行目で、関数 strptime() を使って、日時を設定。</p>
<p><!--------------------------------></p>
<h3><span id="toc10">⑥ 経過時間を算出する</span></h3>
<p>ソースコード <b>#終了５</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 経過時間を算出する ***
経過時間は 3秒です
</pre>
<p>&nbsp;<br />
日時のデータを引き算することで、経過時間を算出することができます。</p>
<pre class="bluerayscode">
<code>
74&emsp;print("\n*** 経過時間を算出する ***")
75&emsp;import time    # モジュールのインポート
76&emsp;time.sleep(3)  # 3秒間処理を一時停止
77&emsp;duration = datetime.datetime.now() - dtNow
78&emsp;value = duration.seconds
79&emsp;print("経過時間は " + str(value) + "秒です")
80&emsp;
81&emsp;#終了６
82&emsp;sys.exit()
</code>
</pre>
<p>time モジュールを使って（75行目）、関数 sleep() で処理を一時停止することができます。（76行目）<br />
77行目で、現在日時から dtNow（13行目で取得した現在日時）を引き算しています。<br />
78行目で、引き算の結果から、秒の値を取得しています。</p>
<p><!--------------------------------></p>
<h3><span id="toc11">⑦ 来月の初日、今月の月末日を算出する</span></h3>
<p>ソースコード <b>#終了６</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 来月の初日を算出する ***
2024/10/01

*** 今月の月末日を算出する ***
2024/09/30
</pre>
<p>&nbsp;</p>
<pre class="bluerayscode">
<code>
84&emsp;print("\n*** 来月の初日を算出する ***")
85&emsp;from dateutil.relativedelta import relativedelta  # モジュールのインポート
86&emsp;dtFirst = dtNow + relativedelta(months=1)  # １か月後
87&emsp;dtFirst = dtFirst.replace(day=1)           # １日
88&emsp;strdt   = dtFirst.strftime("%Y/%m/%d")
89&emsp;print(strdt)
</code>
</pre>
<p>来月の初日を算出するには、relativedelta モジュールを使います。<br />
86行目で、現在時刻の１か月後を算出しています。<br />
87行目で、日を１に設定しています。</p>
<pre class="bluerayscode">
<code>
91&emsp;print("\n*** 今月の月末日を算出する ***")
92&emsp;import calendar  # モジュールのインポート
93&emsp;# 日を今月の日数で置き換える
94&emsp;dtLast = dtNow.replace(day=calendar.monthrange(dtNow.year, dtNow.month)[1])
95&emsp;strdt  = dtLast.strftime("%Y/%m/%d")
96&emsp;print(strdt)
</code>
</pre>
<p>今月の月末日を算出するには、calendar モジュールを使います。<br />
94行目で、現在日時の日の部分を、今月の日数で置き換えています。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-number/">＜数値の操作</a>
</td>
<td class="fgcenter">
日時の操作
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-filename/">フォルダ名とファイル名の操作＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-operation-datetime/">日時の操作 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>繰り返し文（for文、while文） – 【Pythonプログラミング１ ～基礎編～】</title>
		<link>https://kotablog.pro/python-repeated-sentence/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-repeated-sentence</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Sun, 08 Sep 2024 19:14:29 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1078</guid>

					<description><![CDATA[<p>Pythonの繰り返し文（for文、while文）を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．演習用プログラムのダウンロード２．ソースコードの表示３．繰り返し文（for文）① ra [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-repeated-sentence/">繰り返し文（for文、while文） – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonの繰り返し文（for文、while文）を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．演習用プログラムのダウンロード</a><ul><li><a href="#toc2" tabindex="0">practice11.txt</a></li></ul></li><li><a href="#toc3" tabindex="0">２．ソースコードの表示</a></li><li><a href="#toc4" tabindex="0">３．繰り返し文（for文）</a><ul><li><a href="#toc5" tabindex="0">① range関数を使ったfor文</a></li><li><a href="#toc6" tabindex="0">② break と continue</a></li><li><a href="#toc7" tabindex="0">③ イテラブルを使ったfor文</a></li><li><a href="#toc8" tabindex="0">④ リストからrange関数を使って要素を取り出す</a></li></ul></li><li><a href="#toc9" tabindex="0">４．繰り返し文（while文）</a><ul><li><a href="#toc10" tabindex="0">① while文を使う</a></li><li><a href="#toc11" tabindex="0">② break と continue</a></li><li><a href="#toc12" tabindex="0">演習問題</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice11.py ）をダウンロードします。<br />
ダウンロードファイルは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice11.py を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc2">practice11.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 3.10 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice11-txt/?wpdmdl=1059&refresh=69d8a87ab071f1775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc3">２．ソースコードの表示</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice11.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/09/notepad-practice11.png" alt="practice11.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice11.py</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc4">３．繰り返し文（for文）</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc5">① range関数を使ったfor文</span></h3>
<p>コマンドプロンプト で practice11.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
C:\Users\kotablog>python "C:\Python\practice11.py"

*** range関数を使ったfor文 ***
2
4
6
8
10
</pre>
<p>&nbsp;<br />
for文 の構文（range関数を使用）</p>
<div class="primary-box"><span class="red"><b>for</b></span> <b>変数名</b> <span class="red"><b>in range(</b></span><b>繰り返す範囲</b><span class="red"><b>):</b></span><br />
<span class="badge badge-red">インデント</span> <b>繰り返しおこなう処理</b></div>
<p>関数 range() について</p>
<p>range(stop)  ※１<br />
range(start, stop)  ※２<br />
range(start, stop, step)</p>
<p>start に指定した数値から順に step に指定した数値だけ足していき、 stop に指定した数値未満の範囲まで（すなわち stop-1）の連続した数値を作成します。<br />
※１  start を省略したときは 0 が指定されたものとみなされます。<br />
※２  step を省略したときは 1 が指定されたものとみなされます。</p>
<p>range(5)<br />
--> 0, 1, 2, 3, 4</p>
<p>range(1, 4)<br />
--> 1, 2 ,3</p>
<p>range(2, 11, 2)<br />
--> 2, 4, 6, 8, 10</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１１
04&emsp;
05&emsp;  繰り返し文（for文、while文）
06&emsp;
07&emsp;"""
08&emsp;import sys  # モジュールのインポート
09&emsp;
10&emsp;# range関数を使ったfor文
11&emsp;print("\n*** range関数を使ったfor文 ***")
12&emsp;for i in range(2, 11, 2):
13&emsp;  print(i)
14&emsp;
15&emsp;#終了１
16&emsp;sys.exit()
</code>
</pre>
<p><!--------------------------------></p>
<h3><span id="toc6">② break と continue</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** breakでfor文のループを中断する ***
0
1
2

*** continueで処理をスキップする ***
0
1
2
4
5
</pre>
<p>&nbsp;<br />
break<br />
それ以降の処理を行わず、繰り返しが終了します。</p>
<p>continue<br />
それ以降の処理を行わず、繰り返しの先頭に戻ります。</p>
<pre class="bluerayscode">
<code>
18&emsp;print("\n*** breakでfor文のループを中断する ***")
19&emsp;for i in range(6):
20&emsp;  if i == 3:
21&emsp;    break
22&emsp;  print(i)
23&emsp;
24&emsp;print("\n*** continueで処理をスキップする ***")
25&emsp;for i in range(6):
26&emsp;  if i == 3:
27&emsp;    continue
28&emsp;  print(i)
</code>
</pre>
<p>21行目の break で、繰り返しが終了するので、出力は 2 までとなります。<br />
27行目の continue で、繰り返しの先頭に戻るので、3 は出力されません。</p>
<p><!--------------------------------></p>
<h3><span id="toc7">③ イテラブルを使ったfor文</span></h3>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** イテラブルを使ったfor文(リスト) ***
札幌
東京
名古屋
大阪
福岡


*** イテラブルを使ったfor文(タプル) ***
札幌
東京
名古屋
大阪
福岡


*** イテラブルを使ったfor文(辞書) ***
東京: 9821798
名古屋: 2296000


*** 文字列をイテラブルとして扱う ***
こ
ん
に
ち
は
</pre>
<p>&nbsp;<br />
for文 の構文（イテラブルを使用）</p>
<div class="primary-box"><span class="red"><b>for</b></span> <b>変数名</b> <span class="red"><b>in </b></span><b>イテラブル</b><span class="red"><b>:</b></span><br />
<span class="badge badge-red">インデント</span> <b>繰り返しおこなう処理</b></div>
<p>ここでは、イテラブルは、複数の値を扱うデータ型（リスト、タプル、辞書）として学習を進めます。<br />
イテラブルの要素が順次変数に格納されて繰り返されます。</p>
<pre class="bluerayscode">
<code>
33&emsp;# イテラブルを使ったfor文
34&emsp;print("\n*** イテラブルを使ったfor文(リスト) ***")
35&emsp;list1 = ['札幌', '東京', '名古屋', '大阪', '福岡']  # リストを用意
36&emsp;for value in list1:
37&emsp;  print(value)
38&emsp;
39&emsp;print("")
40&emsp;
41&emsp;print("\n*** イテラブルを使ったfor文(タプル) ***")
42&emsp;tuple1 = ('札幌', '東京', '名古屋', '大阪', '福岡')  # タプルを用意
43&emsp;for value in tuple1:
44&emsp;  print(value)
45&emsp;
46&emsp;print("")
47&emsp;
48&emsp;print("\n*** イテラブルを使ったfor文(辞書) ***")
49&emsp;dict1 = {'東京' : 9821798, '名古屋' : 2296000}  # 辞書を用意
50&emsp;for strPlace, intPop in dict1.items():
51&emsp;  print(f'{strPlace}: {intPop}')
52&emsp;
53&emsp;print("")
54&emsp;
55&emsp;print("\n*** 文字列をイテラブルとして扱う ***")
56&emsp;strWork = "こんにちは"
57&emsp;for value in strWork:
58&emsp;  print(value)
59&emsp;
60&emsp;#終了３
61&emsp;sys.exit()
</code>
</pre>
<p>57行目、文字列をイテラブルとして扱ってループすることもできます。</p>
<p><!--------------------------------></p>
<h3><span id="toc8">④ リストからrange関数を使って要素を取り出す</span></h3>
<p>ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** リストからrange関数を使って要素を取り出す ***
札幌
東京
名古屋
大阪
福岡

*** インデックスを使った要素の取り出しが可能です① ***
札幌
名古屋
福岡

*** インデックスを使った要素の取り出しが可能です② ***
札幌
東京
福岡
</pre>
<p>&nbsp;<br />
range関数を使うことによって、インデックスを使った処理が可能になります。</p>
<pre class="bluerayscode">
<code>
63&emsp;# リストからrange関数を使って要素を取り出す
64&emsp;print("\n*** リストからrange関数を使って要素を取り出す ***")
65&emsp;for i in range(len(list1)):
66&emsp;  print(list1[i])
67&emsp;
68&emsp;print("\n*** インデックスを使った要素の取り出しが可能です① ***")
69&emsp;for i in range(0, len(list1), 2):
70&emsp;  print(list1[i])
71&emsp;
72&emsp;print("\n*** インデックスを使った要素の取り出しが可能です② ***")
73&emsp;for i in range(len(list1)):
74&emsp;  if i == 2 or i == 3:
75&emsp;    continue
76&emsp;  print(list1[i])
77&emsp;
78&emsp;#終了４
79&emsp;sys.exit()
</code>
</pre>
<p>69行目で、要素を取り出す範囲をインデックスで指定しています。<br />
74行目と75行目で、インデックス毎の処理をしています。</p>
<p><!---------------------------------------------------------------------></p>
<h2><span id="toc9">４．繰り返し文（while文）</span></h2>
<p><!--------------------------------><br />
while文 の構文</p>
<div class="primary-box"><span class="red"><b>while</b></span> <b>条件</b> <span class="red"><b>:</b></span><br />
<span class="badge badge-red">インデント</span> <b>繰り返しおこなう処理</b></div>
<p>条件を満たさなくなったら繰り返しを終了します。<br />
<!--------------------------------></p>
<h3><span id="toc10">① while文を使う</span></h3>
<p>ソースコード <b>#終了４</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** while文 ***
こんにちは 1回目
こんにちは 2回目
こんにちは 3回目
こんにちは 4回目
こんにちは 5回目
</pre>
<p>&nbsp;</p>
<pre class="bluerayscode">
<code>
81&emsp;# ５回処理を繰り返したい場合
82&emsp;print("\n*** while文 ***")
83&emsp;i = 1
84&emsp;while i < 6:
85&emsp;  print("こんにちは " + str(i) + "回目")
86&emsp;  i += 1
</code>
</pre>
<p>83行目で、変数i に 1 をセット<br />
84行目の、while文 の繰り返しの条件は、6 未満<br />
86行目で、変数i を 1 カウントアップ。<br />
この処理を忘れると、繰り返しが無限に続きますので注意が必要です。</p>
<p><!--------------------------------></p>
<h3><span id="toc11">② break と continue</span></h3>
<p>ソースコード <b>#終了５</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** breakでwhile文のループを中断する ***
['札幌', '東京', '名古屋', '大阪', '福岡']
名古屋が見つかったら処理を中断する
札幌
東京
名古屋

*** continueで処理をスキップする ***
['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島']
２文字以下の地名を抽出する
札幌
東京
大阪
福岡
</pre>
<p>&nbsp;<br />
for文と同様に、while文でも break と continue が使えます。</p>
<pre class="bluerayscode">
<code>
 91&emsp;print("\n*** breakでwhile文のループを中断する ***")
 92&emsp;list1 = ['札幌', '東京', '名古屋', '大阪', '福岡']
 93&emsp;print(list1)
 94&emsp;print("名古屋が見つかったら処理を中断する")
 95&emsp;i = 0
 96&emsp;while i < len(list1):
 97&emsp;  print(list1[i])
 98&emsp;  if list1[i] == "名古屋":
 99&emsp;    break
100&emsp;  i += 1
101&emsp;
102&emsp;print("\n*** continueで処理をスキップする ***")
103&emsp;list2 = ['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島']
104&emsp;print(list2)
105&emsp;print("２文字以下の地名を抽出する")
106&emsp;i = 0
107&emsp;while i < len(list2):
108&emsp;  if len(list2[i]) > 2:  # 文字数が２文字以上の場合はスキップする
109&emsp;    i += 1
110&emsp;    continue
111&emsp;  print(list2[i])
112&emsp;  i += 1
113&emsp;
114&emsp;#終了６
115&emsp;sys.exit()
</code>
</pre>
<p>98行目で、リストの要素に 名古屋 が見つかれば、99行目で、繰り返しを終了しています・<br />
108行目で、リストの要素の文字数が２文字以上であれば、110行目で、繰り返しの先頭に戻っています。</p>
<p><!--------------------------------></p>
<h3><span id="toc12">演習問題</span></h3>
<p>ソースコード <b>#終了６</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
【演習問題１】３文字以上の地名を抽出してください
['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島']
札幌
東京
大阪
福岡
</pre>
<p>&nbsp;<br />
【演習問題１】３文字以上の地名を抽出してください<br />
以下の結果となるように、122行目のコーディングを変更してください<br />
結果：<br />
名古屋<br />
鹿児島</p>
<pre class="bluerayscode">
<code>
117&emsp;print("\n【演習問題１】３文字以上の地名を抽出してください")
118&emsp;list2 = ['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島']
119&emsp;print(list2)
120&emsp;i = 0
121&emsp;while i < len(list2):
122&emsp;  if len(list2[i]) > 2:  # ここの条件を変えてください
123&emsp;    i += 1
124&emsp;    continue
125&emsp;  print(list2[i])
126&emsp;  i += 1
127&emsp;
128&emsp;sys.exit()
</code>
</pre>
<p>&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-filename/">＜フォルダ名とファイル名の操作</a>
</td>
<td class="fgcenter">
繰り返し文（for文、while文）
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-exception-handling/">例外処理＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-repeated-sentence/">繰り返し文（for文、while文） – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>フォルダ名とファイル名の操作 – 【Pythonプログラミング１ ～基礎編～】</title>
		<link>https://kotablog.pro/python-operation-filename/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-operation-filename</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Sun, 08 Sep 2024 16:13:41 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1076</guid>

					<description><![CDATA[<p>Pythonのフォルダ名とファイル名の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．演習用プログラムのダウンロード２．ソースコードの表示３．フォルダ名とファイル名の操作 [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-operation-filename/">フォルダ名とファイル名の操作 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonのフォルダ名とファイル名の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．演習用プログラムのダウンロード</a><ul><li><a href="#toc2" tabindex="0">practice10.txt</a></li></ul></li><li><a href="#toc3" tabindex="0">２．ソースコードの表示</a></li><li><a href="#toc4" tabindex="0">３．フォルダ名とファイル名の操作</a><ul><li><a href="#toc5" tabindex="0">① フォルダやファイルの存在を確認する</a></li><li><a href="#toc6" tabindex="0">② ファイルのパスを作成する</a></li><li><a href="#toc7" tabindex="0">③ フォルダ名、ファイル名を取得する</a></li><li><a href="#toc8" tabindex="0">演習問題</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice10.py ）をダウンロードします。<br />
ダウンロードファイルは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice10.py を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc2">practice10.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 2.30 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice10-txt/?wpdmdl=1058&refresh=69d8a87ab35631775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc3">２．ソースコードの表示</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice10.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/09/notepad-practice10.png" alt="practice10.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice10.py</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc4">３．フォルダ名とファイル名の操作</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc5">① フォルダやファイルの存在を確認する</span></h3>
<p>コマンドプロンプト で practice10.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
C:\Users\kotablog>python "C:\Python\practice10.py"

*** フォルダの存在を確認する ***
フォルダ C:\Python は存在します

*** ファイルの存在を確認する ***
ファイル C:\Python\practice10.py は存在します
</pre>
<p>&nbsp;<br />
フォルダやファイルが存在しているかを確認する方法<br />
・フォルダ：関数 os.path.isdir()<br />
・ファイル：関数 os.path.isfile()</p>
<p>プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム１０
04&emsp;
05&emsp;  フォルダ名とファイル名の操作
06&emsp;
07&emsp;"""
08&emsp;import sys  # モジュールのインポート
09&emsp;import os
10&emsp;import datetime
11&emsp;
12&emsp;# フォルダとファイルのフルパス名を用意する
13&emsp;dir_path  = r"C:\Python"                # フォルダのフルパス名
14&emsp;file_path = r"C:\Python\practice10.py"  # ファイルのフルパス名
15&emsp;
16&emsp;# フォルダの存在を確認する
17&emsp;print("\n*** フォルダの存在を確認する ***")
18&emsp;if os.path.isdir(dir_path):
19&emsp;  print("フォルダ " + dir_path + " は存在します")
20&emsp;else:
21&emsp;  print("フォルダ " + dir_path + " は存在しません")
22&emsp;
23&emsp;# ファイルの存在を確認する
24&emsp;print("\n*** ファイルの存在を確認する ***")
25&emsp;if os.path.isfile(file_path):
26&emsp;  print("ファイル " + file_path + " は存在します")
27&emsp;else:
28&emsp;  print("ファイル " + file_path + " は存在しません")
29&emsp;
30&emsp;#終了１
31&emsp;sys.exit()
</code>
</pre>
<p>13行目で、フォルダのフルパス名を変数 dir_path にセットしています。<br />
14行目で、ファイルのフルパス名を変数 file_path にセットしています。<br />
Windowsのパスを文字列で表したいときは、通常 "C:\\Python\\practice10.py" とする必要がありますが、先頭に r もしくは R をつけることで、r"C:\Python\practice10.py" と書くことができます。</p>
<p>18行目で、if文 と 関数 os.path.isdir() を使って、フォルダの存在を確認しています。<br />
25行目で、if文 と 関数 os.path.isfile() を使って、フォルダの存在を確認しています。</p>
<p><!--------------------------------></p>
<h3><span id="toc6">② ファイルのパスを作成する</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** ファイルのパスを作成する ***
C:\Python\excel\sample.xlsx
</pre>
<p>&nbsp;<br />
関数 os.path.join() を使うと、容易にファイルのフルパス名を作成することができます。<br />
C:\Python の中に、excel フォルダ、そしてファイル sample.xlsx のフルパス名を作成する方法は以下の通りです。</p>
<pre class="bluerayscode">
<code>
33&emsp;# ファイルのパスを作成する
34&emsp;print("\n*** ファイルのパスを作成する ***")
35&emsp;dir_name  = "excel" 
36&emsp;file_name = "sample.xlsx"
37&emsp;strFile = os.path.join(dir_path, dir_name, file_name)
38&emsp;print(strFile)
39&emsp;
40&emsp;#終了２
41&emsp;sys.exit()
</code>
</pre>
<p>37行目で、C:\Python、excel フォルダ、ファイル sample.xlsx を使って、フルパス名を作成しています。</p>
<p><!--------------------------------></p>
<h3><span id="toc7">③ フォルダ名、ファイル名を取得する</span></h3>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** フォルダ名を取得する ***
C:\Python

*** フォルダ名とファイル名を一度に取得する ***
('C:\\Python', 'practice10.py')

*** 拡張子ありのファイル名を取得する ***
practice10.py

*** 拡張子なしのファイル名を取得する ***
practice10

*** ファイルの拡張子を取得する ***
C:\Python\practice10
.py
</pre>
<p>&nbsp;</p>
<pre class="bluerayscode">
<code>
43&emsp;print("\n*** フォルダ名を取得する ***")
44&emsp;dirName = os.path.dirname(file_path)
45&emsp;print(dirName)
46&emsp;
47&emsp;print("\n*** フォルダ名とファイル名を一度に取得する ***")
48&emsp;result = os.path.split(file_path)
49&emsp;print(result)
50&emsp;
51&emsp;print("\n*** 拡張子ありのファイル名を取得する ***")
52&emsp;fileName = os.path.basename(file_path)
53&emsp;print(fileName)
54&emsp;
55&emsp;print("\n*** 拡張子なしのファイル名を取得する ***")
56&emsp;result = os.path.splitext(fileName)[0]
57&emsp;print(result)
58&emsp;
59&emsp;print("\n*** ファイルの拡張子を取得する ***")
60&emsp;root, ext = os.path.splitext(file_path)
61&emsp;print(root)
62&emsp;print(ext)
63&emsp;
64&emsp;#終了３
65&emsp;sys.exit()
</code>
</pre>
<p>44行目、ファイルのフルパス名から、フォルダ名を取得するには、関数 os.path.dirname() を使います。<br />
48行目、フォルダ名とファイル名を一度に取得するには、関数 os.path.split() を使います。<br />
結果はリストで返ってきますので、インデックス０がフォルダ名、インデックス１がファイル名です。<br />
52行目、ファイル名（拡張子あり）を取得するには、関数 os.path.basename() を使うこともできます。<br />
56行目、関数 os.path.splitext() を使うと、拡張子なしのファイル名と拡張子を取得することができます。<br />
結果はタプルで返ってきますので、インデックス０が拡張子なしのファイル名、インデックス１が拡張子です。<br />
60行目、関数 os.path.splitext() はタプルで返りますので、受け取る変数２つを『 , 』（カンマ）で繋げて書くことができます。<br />
【注意】タプルの要素数は２ですので、受け取る変数の数も２でないと、ValueError が発生します。</p>
<p><!--------------------------------></p>
<h3><span id="toc8">演習問題</span></h3>
<p>ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
【演習問題１】ファイル名の後ろに現在日付(_YYYYMMDD)を追加してください

フルパスファイル名：C:\Python\practice10.py
現在日付          ：20240908
結果              ：C:\Python\practice10
</pre>
<p>&nbsp;<br />
【演習問題１】ファイル名の後ろに現在日付(_YYYYMMDD)を追加してください<br />
以下の結果となるように、72行目にコーディングを追加してください<br />
結果：C:\Python\practice10_20240908.py</p>
<pre class="bluerayscode">
<code>
67&emsp;print("\n【演習問題１】ファイル名の後ろに現在日付(_YYYYMMDD)を追加してください")
68&emsp;print("\nフルパスファイル名：" + file_path)
69&emsp;strNow = datetime.datetime.now().strftime("%Y%m%d")  # 現在日付の取得
70&emsp;print("現在日付".ljust(14) + "：" + strNow)
71&emsp;root, ext = os.path.splitext(file_path)  # フルパスファイル名と拡張子を取得
72&emsp;result = root  # ここにコーディングをしてください
73&emsp;print("結果".ljust(16) + "：" + result)
74&emsp;
75&emsp;sys.exit()
</code>
</pre>
<p>&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-datetime/">＜日時の操作</a>
</td>
<td class="fgcenter">
フォルダ名とファイル名の操作
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-repeated-sentence/">繰り返し文（for文、while文）＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-operation-filename/">フォルダ名とファイル名の操作 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>数値の操作 – 【Pythonプログラミング１ ～基礎編～】</title>
		<link>https://kotablog.pro/python-operation-number/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-operation-number</link>
		
		<dc:creator><![CDATA[こたろう]]></dc:creator>
		<pubDate>Sun, 08 Sep 2024 13:26:15 +0000</pubDate>
				<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://kotablog.pro/?p=1072</guid>

					<description><![CDATA[<p>Pythonの数値の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。 目次 １．演習用プログラムのダウンロード２．ソースコードの表示３．数値の操作① 数値を用意する② 桁を指定してゼ [&#8230;]</p>
<p>The post <a href="https://kotablog.pro/python-operation-number/">数値の操作 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Pythonの数値の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。<br />
<!---------------------------------------------------------------------></p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">１．演習用プログラムのダウンロード</a><ul><li><a href="#toc2" tabindex="0">practice08.txt</a></li></ul></li><li><a href="#toc3" tabindex="0">２．ソースコードの表示</a></li><li><a href="#toc4" tabindex="0">３．数値の操作</a><ul><li><a href="#toc5" tabindex="0">① 数値を用意する</a></li><li><a href="#toc6" tabindex="0">② 桁を指定してゼロ詰めをする</a></li><li><a href="#toc7" tabindex="0">③ 桁区切り（カンマ）を入れる</a></li><li><a href="#toc8" tabindex="0">④ 符号（プラス、マイナス）を入れる</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">１．演習用プログラムのダウンロード</span></h2>
<p>演習用プログラム（ practice08.py ）をダウンロードします。<br />
ダウンロードファイルは <b>テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更</b>します。<br />
practice08.py を Python をインストールしたフォルダ（今回は C:\Python）に置きます。<br />
<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img decoding="async" class="wpdm_icon" alt="アイコン" src="https://kotablog.pro/wp-content/plugins/download-manager/assets/file-type-icons/txt.svg" /></div>
            <div class="media-body">
                <h3 class="package-title"><span id="toc2">practice08.txt</span></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 1.93 KB</div>
            </div>
            <div class="ml-3">
                <a class='wpdm-download-link download-on-click btn btn-primary ' rel='nofollow' href='#' data-downloadurl="https://kotablog.pro/download/practice08-txt/?wpdmdl=1056&refresh=69d8a87ab5fa91775806586">ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc3">２．ソースコードの表示</span></h2>
<p>メモ帳を使って、演習用プログラム（ practice08.py ）を開きます。<br />
<div id="attachment_543" style="width: 810px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-543" src="https://kotablog.pro/wp-content/uploads/2024/09/notepad-practice08.png" alt="practice08.py" width="800" height="600" class="size-medium wp-image-543" /><p id="caption-attachment-543" class="wp-caption-text">practice08.py</p></div><br />
<!---------------------------------------------------------------------></p>
<h2><span id="toc4">３．数値の操作</span></h2>
<p><!--------------------------------></p>
<h3><span id="toc5">① 数値を用意する</span></h3>
<p>コマンドプロンプト で practice08.py を実行します。<br />
プログラムを実行する方法は、こちらの記事『<a title="ファイルに保存されたプログラムの実行" href="https://kotablog.pro/python373-create-sourse/#toc2">ファイルに保存されたプログラムの実行</a>』を参照します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
C:\Users\kotablog>python "C:\Python\practice08.py"

*** 数値を用意 ***

*** 数値を表す文字列 ***
12345

*** 数値 ***
10000
</pre>
<p>&nbsp;<br />
プログラムソースを確認します。</p>
<pre class="bluerayscode">
<code>
01&emsp;# -*- coding: utf-8 -*-
02&emsp;"""
03&emsp;演習プログラム８
04&emsp;
05&emsp;  数値の操作
06&emsp;
07&emsp;"""
08&emsp;import sys  # モジュールのインポート
09&emsp;
10&emsp;# 数値を用意する
11&emsp;print("\n*** 数値を用意 ***")
12&emsp;strNum = "12345"  # 数値を表す文字列
13&emsp;print("\n*** 数値を表す文字列 ***")
14&emsp;print(strNum)
15&emsp;
16&emsp;intNum = 10000    # 数値
17&emsp;print("\n*** 数値 ***")
18&emsp;print(intNum)
19&emsp;
20&emsp;#終了１
21&emsp;sys.exit()
</code>
</pre>
<p>12行目、変数 strNum には数値を表す文字列 "12345" が入っています。<br />
16行目、変数 intNum には数値 10000 が入っています。</p>
<p><!--------------------------------></p>
<h3><span id="toc6">② 桁を指定してゼロ詰めをする</span></h3>
<p>ソースコード <b>#終了１</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 桁を指定してゼロ詰めをする ***

*** 数値を表す文字列 ***《 str.zfill() 》
ゼロ詰めして７桁：0012345
&lt;class 'str'&gt;

*** 数値 ***《 組み込み関数 format() 》
ゼロ詰めして７桁：0010000
&lt;class 'str'&gt;

*** 数値 ***《 文字列メソッド format() 》
ゼロ詰めして７桁：0010000
&lt;class 'str'&gt;
</pre>
<p>&nbsp;<br />
ゼロ詰めをする方法<br />
数値を表す文字列をゼロ詰めするときは、関数 zfill() を使います。<br />
数値をゼロ詰めするときは、組み込み関数 format() を使う方法と、文字列メソッド format() を使う方法があります。<br />
結果は文字列になります。</p>
<pre class="bluerayscode">
<code>
23&emsp;# 桁を指定してゼロ詰めをする
24&emsp;print("\n*** 桁を指定してゼロ詰めをする ***")
25&emsp;
26&emsp;print("\n*** 数値を表す文字列 ***《 str.zfill() 》")
27&emsp;result = strNum.zfill(7)          # str.zfill() を利用
28&emsp;print("ゼロ詰めして７桁：" + result)
29&emsp;print(type(result))
30&emsp;
31&emsp;print("\n*** 数値 ***《 組み込み関数 format() 》")
32&emsp;result = format(intNum, '07d')    # 組み込み関数 format() を利用
33&emsp;print("ゼロ詰めして７桁：" + result)
34&emsp;print(type(result))
35&emsp;
36&emsp;print("\n*** 数値 ***《 文字列メソッド format() 》")
37&emsp;result = '{:0=7}'.format(intNum)  # 文字列メソッド format() を利用
38&emsp;print("ゼロ詰めして７桁：" + result)
39&emsp;print(type(result))
40&emsp;
41&emsp;#終了２
42&emsp;sys.exit()
</code>
</pre>
<p>27行目で、数値を表す文字列を str.zfill(n) を使ってゼロ詰めしています。引数 n は、ゼロ詰めの桁数を指定します。<br />
32行目で、数値を 組み込み関数 format() を使ってゼロ詰めしています。<br />
37行目で、数値を 文字列メソッド 文字列メソッド format() を使ってゼロ詰めしています。</p>
<p><!--------------------------------></p>
<h3><span id="toc7">③ 桁区切り（カンマ）を入れる</span></h3>
<p>ソースコード <b>#終了２</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 桁区切り（カンマ）を入れる ***
1000000
1,000,000
&lt;class 'str'&gt;
</pre>
<p>&nbsp;<br />
桁区切り（カンマ）を入れるときは、文字列メソッド format() を使います。</p>
<pre class="bluerayscode">
<code>
44&emsp;# 桁区切り（カンマ）を入れる
45&emsp;print("\n*** 桁区切り（カンマ）を入れる ***")
46&emsp;intNum = 1000000
47&emsp;print(intNum)
48&emsp;result = '{:,}'.format(intNum)  # 文字列メソッド format() を利用
49&emsp;print(result)
50&emsp;print(type(result))
51&emsp;
52&emsp;#終了３
53&emsp;sys.exit()
</code>
</pre>
<p>48行目で、文字列メソッド format() を使って桁区切り（カンマ）を入れています。</p>
<p><!--------------------------------></p>
<h3><span id="toc8">④ 符号（プラス、マイナス）を入れる</span></h3>
<p>ソースコード <b>#終了３</b> の１行下の <b>sys.exit()</b> の先頭に「 # 」を入れてコメントにします。<br />
<span class="keyboard-key"> Ctrl </span> キーを押しながら、<span class="keyboard-key"> S </span> キーを押して、ソースコードを上書き保存します。<br />
コマンドプロンプトで<span class="keyboard-key"> F3 </span> キーを押して、<span class="keyboard-key"> Enter </span> キーを押下します。<br />
以下のように表示されます。</p>
<pre class="bluerays">
*** 符号（プラス、マイナス）を入れる ***
1000
-1000
符号を入れる：+1000
符号を入れる：-1000
&lt;class 'str'&gt;
</pre>
<p>&nbsp;<br />
通常、負の値にのみ符号（マイナス -）が付き、正の値の符号（プラス +）は付きません。<br />
正の値の符号を付けるときは、文字列メソッド format() を使います。</p>
<pre class="bluerayscode">
<code>
55&emsp;# 符号（プラス、マイナス）を入れる
56&emsp;#デフォルトでは負の値にのみ符号（マイナス-）が表示されます
57&emsp;print("\n*** 符号（プラス、マイナス）を入れる ***")
58&emsp;intWork1 = 1000
59&emsp;intWork2 = -1000
60&emsp;print(intWork1)
61&emsp;print(intWork2)
62&emsp;
63&emsp;result = '{:+}'.format(intWork1)  # 文字列メソッド format() を利用
64&emsp;print("符号を入れる：" + result)
65&emsp;result = '{:+}'.format(intWork2)  # 文字列メソッド format() を利用
66&emsp;print("符号を入れる：" + result)
67&emsp;print(type(result))
68&emsp;
69&emsp;sys.exit()
</code>
</pre>
<p>63行目、63行目で、文字列メソッド format() を使って符号（プラス、マイナス）を入れています。<br />
&nbsp;</p>
<table class="footerguide">
<tr>
<td class="fgleft">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-string/">＜文字列の操作</a>
</td>
<td class="fgcenter">
数値の操作
</td>
<td class="fgright">
<a style="text-decoration: none;" href="https://kotablog.pro/python-operation-datetime/">日時の操作＞</a>
</td>
</tr>
</table><p>The post <a href="https://kotablog.pro/python-operation-number/">数値の操作 – 【Pythonプログラミング１ ～基礎編～】</a> first appeared on <a href="https://kotablog.pro">kotablog.pro</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
