<?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 | リョクちゃの電脳日記</title>
	<atom:link href="https://dreamparadaisu.com/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>https://dreamparadaisu.com</link>
	<description>今まで学んできたことや、新たに学んだこと、趣味を通して様々な人と共有できたらなと思いはじめた電脳日記。</description>
	<lastBuildDate>Wed, 18 Jan 2023 12:46:45 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<atom:link rel='hub' href='https://dreamparadaisu.com/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">180489529</site>	<item>
		<title>【Python勉強会】運試し！？おみくじプログラムを作ってみる</title>
		<link>https://dreamparadaisu.com/python_46/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_46</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Wed, 18 Jan 2023 12:46:45 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[入門]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=4992</guid>

					<description><![CDATA[<p>どうも！リョクちゃです！ &#160; だいぶ遅れての更新になりますが、あけましておめでとうございます。 本年も変わらず自身の学んできた上での経験や知識をメモとして発信・共有していきます！ &#160; さて、新年1発目...</p>
The post <a href="https://dreamparadaisu.com/python_46/">【Python勉強会】運試し！？おみくじプログラムを作ってみる</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです！</p>
<p>&nbsp;</p>
<p>だいぶ遅れての更新になりますが、あけましておめでとうございます。</p>
<p>本年も変わらず自身の学んできた上での経験や知識をメモとして発信・共有していきます！</p>
<p>&nbsp;</p>
<p>さて、新年1発目は、Pythonでおみくじアプリを作ってみることにしました。</p>
<p>以前にVBでは作っていたのですが、それよりも簡単に、コンソール上でおみくじの結果が</p>
<p>わかるアプリを簡単に作ってみることにします。</p>
<p>&nbsp;</p>
<p>これができたらグラフィカルなモノに仕上げてもいいかなと思っています。</p>
<p>&nbsp;</p>
<p>ちなみに前回(去年)の記事は、こちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_45/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_5-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_5-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_5-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_5-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_45/" class="blog-card-title-link">【Python勉強会】iniファイルを読込む～設定値を取り扱う～</a></div><div class="blog-card-excerpt">iniファイル、アプリケーションを作る際にあらかじめ設定値を持たせたいときがあると思います。そんなとき、最近だとJSONやXMLなどが扱われているかと思いますが、まだまだiniファイルも活用されています。今回は、Pythonでもiniファイルから設定値を読込む方法を紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_45/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_45/" alt="" /></a></div><div class="blog-card-date">2022-11-12 23:40</div></div></div>
<p>&nbsp;</p>
<h1>完成イメージ</h1>
<p>今回作成するおみくじアプリ?の完成形は、下図のような形になります。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_5002" class="wp-block-image aligncenter"><img decoding="async" width="334" height="48" src="https://dreamparadaisu.com/wp-content/uploads/2023/01/omikuji_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>コンソールウィンドウ上でPythonで作成したプログラムを実行すると、</p>
<p>今日の運勢が表示されるといった、いたってシンプルなプログラムです。</p>
<p>&nbsp;</p>
<p>シンプル故に簡単に作れるので、ちょっと凝らしを入れて、作成をしていきます。</p>
<p>&nbsp;</p>
<h1>おみくじアプリの構成</h1>
<p>&nbsp;</p>
<p>下図のようなファイル構成にします。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_5003" class="wp-block-image aligncenter"><img decoding="async" width="680" height="336" src="https://dreamparadaisu.com/wp-content/uploads/2023/01/omikuji_2.png" class="attachment-680x506 size-680x506" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>メインアプリは、実際にコンソールウィンドウで実行するアプリを指します。</p>
<p>&nbsp;</p>
<p>メインアプリは、運勢などが格納されたclsOmikuji.pyに対して、</p>
<p>今日の運勢を問い合わせます。</p>
<p>&nbsp;</p>
<p>問い合わせが来たら、clsOmikuji.pyは今日の運勢を返します。</p>
<figure id="attachment_mmd_5004" class="wp-block-image aligncenter"><img decoding="async" width="680" height="583" src="https://dreamparadaisu.com/wp-content/uploads/2023/01/omikuji_3.png" class="attachment-680x878 size-680x878" alt="" loading="lazy" align="center" /></figure>
<p>上図のような順番で処理が行われるようにしていきます。</p>
<p>&nbsp;</p>
<h1>運勢クラスを作成する</h1>
<p>&nbsp;</p>
<p>まずは、運勢を格納するクラスを作成していきます。</p>
<p>運勢クラスは、特に処理をするわけではなく、</p>
<p>データを格納しておくだけのクラスとして利用します。</p>
<p>&nbsp;</p>
<p>そのため、データクラスとして作成をしていきます。</p>
<p>&nbsp;</p>
<h2>データクラスとは？</h2>
<blockquote>データクラスとは、<b>データを保持するクラスのこと</b>を呼びます。
<p style="text-align: right">出典：<a href="https://yumarublog.com/python/dataclass/#:~:text=%E3%83%87%E3%83%BC%E3%82%BF%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%A8%E3%81%AF%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF,%E3%82%82%E3%81%AE%E3%81%AB%E3%81%AA%E3%82%8A%E3%82%84%E3%81%99%E3%81%84%E3%81%A7%E3%81%99%E3%80%82">【Python】データクラスの定義と使い方</a></p>
<p style="text-align: right">YUMARU BLOG</p>
 </blockquote>
<p>&nbsp;</p>
<p>データクラスを使うには、
</p><pre class="urvanov-syntax-highlighter-plain-tag">from dataclass import dataclass</pre><p>
でdataclassをimportします。</p>
<p>&nbsp;</p>
<p>通常のクラスを宣言する要領で、class クラス名の上に@dataclassと記述します。</p>
<p>classを修飾する形で宣言します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">@dataclass
class Omikuji:</pre><p>
&nbsp;</p>
<p>データクラスのクラス名はOmikujiとします。</p>
<p>このクラスには、運勢データを格納します。</p>
<p>&nbsp;</p>
<p>今回は、凶、小吉、中吉、大吉の運勢を扱います。</p>
<p>それぞれの運勢が選ばれたときに、文言を添えて返すように、それぞれの運勢に対して</p>
<p>文言を配列として持たせておきます。</p>
<p>&nbsp;</p>
<p>各運勢と文言は1:1の関係になるように、辞書型として宣言し、代入しておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">@dataclass
class Omikuji:
    lstDaikichi = ["金運は非常によく、思わぬ収入がありそう。"]
    lstChukichi = ["気力充実するでしょう。", "嫌いな人に好かれてるかも！思い当たらなければ逆"]
    lstShokichi = ["金運工場の兆しがあるが、ムダ遣いは控えましょう。", "健康は可もなく不可もありません。", "可もなく不可もなく、普通に過ごすがよい。"]
    lstkichi = ["恋愛は心がけ次第でしょう。", "金運は、ボランティア活動が上昇のきっかけになるはず。"]
    lstkyo = ["流れが来るまで、無理するべからず。", "恋愛は辛抱が大事です。"]
    dictFortune = {"吉": lstkichi,
    "小吉": lstShokichi,
    "中吉": lstChukichi,
    "大吉": lstDaikichi,
    "凶": lstkyo}</pre><p>
&nbsp;</p>
<p>これで運勢クラスの準備ができました。</p>
<p>&nbsp;</p>
<h1>メインのアプリを作成</h1>
<p>次にメインアプリを作成していきます。</p>
<p>&nbsp;</p>
<p>先ほど作成した運勢クラスを使うために、まずは運勢クラスをimportしておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">from clsOmikuji import Omikuji</pre><p>
&nbsp;</p>
<p>肝心な運勢を引く際の処理はどうするかというと、</p>
<p>今回は、1～9の数字からそれぞれ運勢を割り当てて、ランダムで選ばれた数字に対して、</p>
<p>運勢を返すようにしていきます。</p>
<p>&nbsp;</p>
<p>割り当てはこんな感じにしました。</p>
<ul>

<li>1 : 大吉</li>

<li>2 : 中吉</li>

<li>3 : 小吉</li>

<li>4 : 吉</li>

<li>5 : 吉</li>

<li>6 : 吉</li>

<li>7 : 小吉</li>

<li>8 : 中吉</li>

<li>9 : 凶</li>
</ul>
<p>これらの数字をインプットとして、運勢クラスから運勢を問い合わせ、運勢を引きます。</p>
<p>&nbsp;</p>
<p>運勢を引く行為については、メインアプリ内で関数として宣言をしておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">def drawOmikuji(drawNumber):</pre><p>
引数には、ランダムに選ばれた数字が渡されます。</p>
<p>&nbsp;</p>
<p>これを基に、先ほどの割り当てから運勢を引くようにします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">def drawOmikuji(drawNumber):
    if drawNumber == 1:
        resFortune = "大吉"
    elif drawNumber == 9:
        resFortune = "凶"
    elif drawNumber == 2 or drawNumber == 8:
        resFortune = "中吉"
    elif drawNumber == 3 or drawNumber == 7:
        resFortune = "小吉"
    else:
        resFortune = "吉"</pre><p>
&nbsp;</p>
<p>それぞれの運勢に対して、文言を獲得する処理も加えます。</p>
<p>文言は運勢クラスにあるので、
</p><pre class="urvanov-syntax-highlighter-plain-tag">def drawOmikuji(drawNumber):
    omikujiBox = Omikuji()
    if drawNumber == 1:
        resFortune = "大吉"
        resFortuneWord = omikujiBox.dictFortune['大吉']
    elif drawNumber == 9:
        resFortune = "凶"
        resFortuneWord = omikujiBox.dictFortune['凶'][num]
    elif drawNumber == 2 or drawNumber == 8:
        resFortune = "中吉"
        resFortuneWord = omikujiBox.dictFortune['中吉'][num]
    elif drawNumber == 3 or drawNumber == 7:
        resFortune = "小吉"
        resFortuneWord = omikujiBox.dictFortune['小吉'][num]
    else:
        resFortune = "吉"
        resFortuneWord = omikujiBox.dictFortune['吉'][num]</pre><p>
&nbsp;</p>
<p>omikujiBoxという変数に対して、Omikuji()をインスタンス化させます。</p>
<p>インスタンス化させたomikujiBoxから運勢を引き当てます。</p>
<p>&nbsp;</p>
<p>先ほど、運勢クラスでは各運勢に対して文言を複数持たせている運勢もあり、</p>
<p>そうした場合は、ランダムで文言を選べるようにしておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">import random as rdm

def drawOmikuji(drawNumber):
    omikujiBox = Omikuji()
    if drawNumber == 1:
        resFortune = "大吉"
        resFortuneWord = omikujiBox.dictFortune['大吉']
    elif drawNumber == 9:
        num = rdm.randint(0, 1)
        resFortune = "凶"
        resFortuneWord = omikujiBox.dictFortune['凶'][num]
    elif drawNumber == 2 or drawNumber == 8:
        num = rdm.randint(0, 1)
        resFortune = "中吉"
        resFortuneWord = omikujiBox.dictFortune['中吉'][num]
    elif drawNumber == 3 or drawNumber == 7:
        num = rdm.randint(0, 2)
        resFortune = "小吉"
        resFortuneWord = omikujiBox.dictFortune['小吉'][num]
    else:
        num = rdm.randint(0, 1)
        resFortune = "吉"
        resFortuneWord = omikujiBox.dictFortune['吉'][num]</pre><p>
&nbsp;</p>
<p>randomモジュールをimportし、</p>
<p>num変数に各運勢の個数の範囲内でランダムな数値を返します。</p>
<p>&nbsp;</p>
<p>最後におみくじの結果をprint()で出力するようにします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">print("今日の運勢は：" + resFortune + "です。")
    print(resFortuneWord)</pre><p>
&nbsp;</p>
<p>最後にdrawOmikujiをMainOmikuji内で呼び出します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">drawNumber = rdm.randint(1, 9)
drawOmikuji(drawNumber)</pre><p>
drawNumber変数にはランダムな数値を1～9の範囲内で返します。</p>
<p>これを基に、今日の運勢を引きます。</p>
<p>&nbsp;</p>
<p>実行するには、保存した場所でコンソールウィンドウ(コマンドプロンプト)より</p>
<p>&nbsp;</p>
<p><span class="bold">python MainOmikuji.py</span></p>
<p>&nbsp;</p>
<p>と実行すると、おみくじを引くことができます。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_5010" class="wp-block-image aligncenter"><img decoding="async" width="406" height="50" src="https://dreamparadaisu.com/wp-content/uploads/2023/01/omikuji_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>コンソールウィンドウでおみくじを引くアプリを作成してみました。</p>
<p>少し凝らして作ってみたモノの、まだまだデータクラスを</p>
<p>十分に活用できていないかもしれないです。</p>
<p>&nbsp;</p>
<p>おみくじを引くだけなら、もっと簡単に作れますが、</p>
<p>今回はデータクラスと、それを呼び出す別ファイルを作成し、</p>
<p>複数ファイルを用いたおみくじアプリを作ってみました。</p>
<p>&nbsp;</p>
<p>もう少し鍛錬を積んで、データクラスを使えるようになりたいです。</p>
<p>&nbsp;</p>
<p>何かしらの参考になれば嬉しいです。</p>
<p>&nbsp;</p>
<p>最後までお読みいただき、ありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong> <div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="4992"
					data-ulike-nonce="3b5672b9bc"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_4992"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_46/">【Python勉強会】運試し！？おみくじプログラムを作ってみる</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4992</post-id>	</item>
		<item>
		<title>【Python勉強会】iniファイルを読込む～設定値を取り扱う～</title>
		<link>https://dreamparadaisu.com/python_45/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_45</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 12 Nov 2022 14:40:43 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[パソコン]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[入門]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=4830</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、Pythonでiniファイルに書込まれている値(設定値)を読込む方法を紹介していきます。 アプリケーションを作成していくうえで、iniファイルは必要なスキルなので、 覚えて...</p>
The post <a href="https://dreamparadaisu.com/python_45/">【Python勉強会】iniファイルを読込む～設定値を取り扱う～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、Pythonでiniファイルに書込まれている値(設定値)を読込む方法を紹介していきます。</p>
<p>アプリケーションを作成していくうえで、iniファイルは必要なスキルなので、</p>
<p>覚えておくといいです！</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちらになります。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_44/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/4b820548ffdca22d08fbb3ba51ee22f3-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/11/4b820548ffdca22d08fbb3ba51ee22f3-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/11/4b820548ffdca22d08fbb3ba51ee22f3-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/11/4b820548ffdca22d08fbb3ba51ee22f3-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_44/" class="blog-card-title-link">【Python勉強会】Seleniumを使ってGoogle検索した結果を取得</a></div><div class="blog-card-excerpt">Python + Seleniumを活用して、Google検索した検索結果(1ページ目)を全て取得し、その中でタイトルとURLを抽出し変数に代入する方法を簡単に紹介しています。検索結果の一覧が取得出来たらいいなと悩んでいる方への少しでも参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_44/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_44/" alt="" /></a></div><div class="blog-card-date">2022-11-07 00:55</div></div></div>
<p>&nbsp;</p>
<h1>iniファイル ＝ 設定ファイル</h1>
<p>主にWindowsで使用され、<span class="marker-under">テキストファイルの一種</span>となります。</p>
<p><span class="marker-under">アプリケーションの設定などを書き込んだ設定ファイル</span>になります。</p>
<p>&nbsp;</p>
<p>例えば、画面のサイズやアプリケーションがファイルを作成する機能を持っていたら、</p>
<p>そのファイルの作成場所などを設定ファイルに書き込んでおくことで、</p>
<p><span class="marker-under">コードをいじらなくても、設定ファイルを参照することで、</span></p>
<p><span class="marker-under">変更が行えたりと利便性があります</span>。</p>
<p>&nbsp;</p>
<p>iniファイルは、テキストファイルと違って、<span class="marker-under"><strong>拡張子が&#8221;.ini&#8221;</strong></span>になります。</p>
<p>最近では、設定値を収めておくのに、<strong>JSON</strong>や<strong>XML</strong>といったデータ形式の、</p>
<p>ファイルを取り扱うことも多く見受けられています。</p>
<p>&nbsp;</p>
<p>それぞれにメリットデメリットがあるので、必要に応じて</p>
<p>&nbsp;</p>
<h1>iniファイルの用意をする</h1>
<p>さっそく、今回使うiniファイルの用意をしていきます。</p>
<p>&nbsp;</p>
<p>今回は、VSCodeを使って説明していきます。</p>
<p>まず、VSCodeを起動します。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_4832" class="wp-block-image aligncenter"><img decoding="async" width="636" height="666" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>起動したら、メインで使用されているワークスペースもしくはサブのワークスペースに</p>
<p>今回のテスト用のフォルダをローカルの適当な場所に作成しておき、追加しておきます。</p>
<p>&nbsp;</p>
<p>※筆者はデスクトップ上にTestConfigIniというフォルダを作成し、</p>
<p>WorkSpaceに追加しています。</p>
<figure id="attachment_mmd_4834" class="wp-block-image aligncenter"><img decoding="async" width="681" height="580" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_2-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>追加出来たら、追加したフォルダに今回、</p>
<p>対象となるテスト用のiniファイルを新たに作成します。</p>
<figure id="attachment_mmd_4835" class="wp-block-image aligncenter"><img decoding="async" width="681" height="580" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>TestConfigIniの中に、Config.iniというファイルを作成しました。</p>
<p>※保存の際に文字コードを決める場合は、UTF-8で設定をしておきます。</p>
<p>デフォルトでは、UTF-8だと思います。</p>
<p>&nbsp;</p>
<p>作成したら、Config.iniファイルに以下のように記述します。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_4836" class="wp-block-image aligncenter"><img decoding="async" width="308" height="198" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/PythonConfigIni_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>先ほど記述した内容がなにを意味するのか、簡単に構成を図示しておきます。</p>
<figure id="attachment_mmd_937" class="wp-block-image aligncenter"><img decoding="async" width="669" height="383" src="https://dreamparadaisu.com/wp-content/uploads/2020/10/ini_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>キーに対してバリューがあるといった感じです。</p>
<p>これはPythonの辞書型(dictionary)と似たような形ですね。</p>
<p>&nbsp;</p>
<p>次のセクションでは、作成したiniファイルをPythonで読み込んでいきます。</p>
<p>&nbsp;</p>
<h1>Pythonでiniファイルを読込む</h1>
<p>iniファイルをPythonで読み込むには、&#8221;<strong>configparser</strong>&#8220;といわれるモジュールを使うことで</p>
<p>簡単に読み込むことができます。</p>
<p>&nbsp;</p>
<h3>使い方</h3>
<div class="sp-info">import configparser</div>
<p>configparserモジュールを呼び出しています。</p>
<p>&nbsp;</p>
<p>モジュールの設定をしたら、configparserモジュールからConfigParserクラスを呼び出し、</p>
<p>変数に代入します。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">config_ini = config.ConfigParser()</pre><p>
ここでは、config_ini変数にConfigparserクラスを設定しています。</p>
<p>&nbsp;</p>
<p>config_ini変数を使って、iniファイルを読込む準備をしていきます。</p>
<p>読込むには、Configparserクラスの<span style="text-decoration: underline"><strong>read</strong>メソッド</span>を使用します。</p>
<p>&nbsp;</p>
<p>readメソッドの引数には、主に</p>
<ul>

<li>引数1 : 読み込みたいiniファイルのパス</li>

<li>引数2 : iniファイルの文字コード</li>
</ul>
<p>を指定します。</p>
<p>&nbsp;</p>
<p>config_ini変数を使って、readメソッドを呼び出すと以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">config_ini.read(&lt;iniファイルのパス&gt;, &lt;文字コード&gt;)</pre><p>
&nbsp;</p>
<p>引数1で指定したパスのiniファイルを読込んだ結果が、config_iniに代入されます。</p>
<p>&nbsp;</p>
<p>ここから、Config.iniファイルのTESTセクションからkeyの値を読み取ります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">print(config_ini["TEST"]["key"])</pre><p>
&nbsp;</p>
<p>実行すると、</p>
<p>出力には、りんごと表示されます。</p>
<p>&nbsp;</p>
<p><strong>config_ini[セクション名][キー名]</strong>で指定した、</p>
<p>セクションとキーの値を取り出すことができます。</p>
<p>&nbsp;</p>
<h1>Python3.0系では……他の方法も</h1>
<p>実はPython3.0系では、他にの方法もあり、以下の記述でも</p>
<p>iniファイルから指定したセクション、キーで値が取り出せます。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">print(config_ini.get("セクション名", "キー名"))</pre><p>
Configparserクラスの<span style="text-decoration: underline"><strong>get</strong>メソッド</span>を使うことで、同様に読み込むことができます。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>Pythonでiniファイルを読込む方法を紹介していきました。</p>
<p><strong>configparser</strong>モジュールは非常に便利なので、</p>
<p>もしiniファイルを使う際は活用してみて下さい。</p>
<p>&nbsp;</p>
<p>書込みもconfigparserを用いて可能なので、次回紹介していきます。</p>
<p>&nbsp;</p>
<p>最後までお読みいただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong> <div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="4830"
					data-ulike-nonce="2cfcf9b295"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_4830"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_45/">【Python勉強会】iniファイルを読込む～設定値を取り扱う～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4830</post-id>	</item>
		<item>
		<title>【Python勉強会】Seleniumを使ってGoogle検索した結果を取得</title>
		<link>https://dreamparadaisu.com/python_44/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_44</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sun, 06 Nov 2022 15:55:42 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[パソコン]]></category>
		<category><![CDATA[プログラム]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=3314</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。   ネットサーフィンをしていると、ふと検索結果を一時的にでも セーブしておきたいときってありませんか？   例えば、Google検索でキーワード「今日の献立」で調べた時に、 下図のような結果が得...</p>
The post <a href="https://dreamparadaisu.com/python_44/">【Python勉強会】Seleniumを使ってGoogle検索した結果を取得</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p> </p>
<p>ネットサーフィンをしていると、ふと検索結果を一時的にでも</p>
<p>セーブしておきたいときってありませんか？</p>
<p> </p>
<p>例えば、Google検索でキーワード「今日の献立」で調べた時に、</p>
<p>下図のような結果が得られるかと思います。</p>
<p> </p>
<figure id="attachment_mmd_4795" class="wp-block-image aligncenter"><img decoding="async" width="961" height="907" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/2b530e80c7d0de90885e285c5d798063.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>全ての結果を見るには、応える時がありませんか？</p>
<p> </p>
<p>今回は、Google検索して得られた結果をPython + Seleniumで</p>
<p>CSVファイル形式もしくは何らかの変数に格納する方法を簡単に紹介していきます。</p>
<p> </p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_43/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_6-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_6-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_6-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_6-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_43/" class="blog-card-title-link">【Python勉強会】与えられた数値が偶数か奇数かを判定する方法</a></div><div class="blog-card-excerpt">Pythonで与えられた数値に対して、それが偶数なのか、奇数なのかを判定する方法を簡単に紹介していきます。プログラミング学びたての人が初めに通る道でもあり、意外と簡単そうに見えて奥が深かったりもします。ここでは、簡単にかける方法と、それを踏まえた応用っぽい書き方をざっくりと。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_43/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_43/" alt="" /></a></div><div class="blog-card-date">2022-08-27 01:50</div></div></div>
<p> </p>
<p>Seleniumに関しては、こちらを参照ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_33/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_33/" class="blog-card-title-link">【Python勉強会】Seleniumのインストールをしてみた～Google Chrome編～</a></div><div class="blog-card-excerpt">プログラムでブラウザの操作が自動化できればいいな？って思ったことはありませんか？今回は、Pythonでブラウザ操作を自動化してくれるSeleniumというライブラリをインストールする方法を紹介しています。章立てて連載していきます。何かしらの参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_33/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_33/" alt="" /></a></div><div class="blog-card-date">2021-08-26 06:54</div></div></div>
<p> </p>
<p>今回、動作環境ですが、Jupyter Notebookを使用して検証を行います。</p>
<p>検証程度であれば、こちらの方が早いため、活用しています。</p>
<p>ブラウザには、Google Chromeを使用しています。</p>
<p> </p>
<h1>準備編：Seleniumの準備</h1>
<p>Jupyter Notebookを起動し、Seleniumをインポートし使える形にします。</p>
<p> </p>
<figure id="attachment_mmd_4794" class="wp-block-image aligncenter"><img decoding="async" width="680" height="177" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/795316b92fc766b0181f6fef074f03fa.png" class="attachment-680x267 size-680x267" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>実行すると、別ウィンドウでブラウザが立ち上がるかと思います。</p>
<figure id="attachment_mmd_4796" class="wp-block-image aligncenter"><img decoding="async" width="924" height="238" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/c8856789ec11ab8b1013037cef6929f9.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>対象となるページのURLを開く</p>
<p>ブラウザが立ち上がったら、今回対象となるWebページのURLを開きます。</p>
<p>対象のURL：https://www.google.com/?hl=ja</p>
<figure id="attachment_mmd_4797" class="wp-block-image aligncenter"><img decoding="async" width="680" height="90" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/3a4f695a458cb0ac0aceaa2eb13ac2dd.png" class="attachment-680x135 size-680x135" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>上図のIn[2]でurl変数に対象のURLを代入し、In[3]で立ち上がったブラウザに対して、</p>
<p>url変数を渡すことで、Webページを開いています。</p>
<p>以下、実行後のブラウザの状態になります。</p>
<p> </p>
<figure id="attachment_mmd_4798" class="wp-block-image aligncenter"><img decoding="async" width="920" height="608" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/f96d9b4281f6d16b3c7589aed5a17be5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>ここまでで検索をするまでの状態に整えることができました。</p>
<p>以降では、実際に検索をSeleniumを用いて実行し、検索結果を取得していきます。</p>
<p> </p>
<h1>Google検索をする</h1>
<p>検索キーワードには、「<strong>今日の献立</strong>」としておきます。</p>
<p> </p>
<p>まず、Google上で検索をするには、</p>
<ol>
<li>検索ボックスの要素を取得</li>
<li>1.で取得した検索ボックスに検索したいワードを入力</li>
<li>検索ボタンの要素を取得し実行</li>
</ol>
<p>1~3の処理を行うことで、Google検索をすることができます。</p>
<p>実際に、これらの処理をPythonで書いていきます。</p>
<p> </p>
<h2>検索ボックスの要素を取得</h2>
<p> </p>
<p>まず、Googleの検索ページで、検索ボックスとは何か？</p>
<p>これは下図の赤枠で示されるオブジェクトが検索ボックスになります。</p>
<p> </p>
<figure id="attachment_mmd_4801" class="wp-block-image aligncenter"><img decoding="async" width="680" height="450" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/94ed160662be198949535a112047e9b4.png" class="attachment-680x678 size-680x678" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>では、この検索ボックスはどうやって表されているのでしょうか。</p>
<p>それは、HTMLといわれる言語で表されています。</p>
<p>HTMLはWebページを構成するのに使われる言語になります。</p>
<p> </p>
<p>HTMLでは検索ボックスは、<figure id="attachment_mmd_4802" class="wp-block-image aligncenter"><img decoding="async" width="544" height="106" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/f4a1b0aed5dc02442c433030ff24c031.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>上図のHTMLの構成で表されています。</p>
<p> </p>
<p>ここではHTMLについては深くは紹介しませんが、</p>
<p>Seleniumを扱う場合は、HTMLの理解もある程度必要になってきます。</p>
<p> </p>
<p>検索ボックスが表されているHTMLがわかったので、</p>
<p>これより検索ボックスを取得してみます。</p>
<p> </p>
<p>取得するには、</p>
<pre class="lang:python decode:true">elem_searchBox = browser.find_element_by_name('q')</pre>
<p>とすることで、検索ボックスを取得することができます。</p>
<p>ここでは、elem_searchBoxと定めた変数に、find_element_by_nameメソッドで</p>
<p>返ってきた結果を代入しています。</p>
<p> </p>
<p>browser変数には、先ほど立ち上げたブラウザ情報が代入されています。</p>
<p>ちなみにbrowser変数の型としては、</p>
<figure id="attachment_mmd_4803" class="wp-block-image aligncenter"><img decoding="async" width="478" height="74" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/8aa09ea6d7822fbb10331635d428d488.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>となり、WebDriberのfind_element_by_nameメソッドを使用して、</p>
<p>検索ボックスを取得します。</p>
<p> </p>
<p>find_element_by_nameメソッドに引数として、対象のWebページ内で</p>
<p>検索ボックスを表すタグの値を渡してあげます。</p>
<p> </p>
<p>検索ボックスを構成するHTMLでは、nameというタグがありました。</p>
<p>また、nameというタグには&#8221;q&#8221;といった値が代入されていました。</p>
<p>したがって、<span style="text-decoration: underline">nameタグの<strong>q</strong>と指定</span>してやれば、検索ボックスが取得できます。</p>
<p> </p>
<h2>検索ボックスにキーワードを入力</h2>
<p>取得できた検索ボックスに対して、キーワードを入力するには、</p>
<p>取得した要素オブジェクトのsend_keysメソッドを使用することで、</p>
<p>検索ボックスに対して入力ができます。</p>
<p> </p>
<p>こんな風になります。</p>
<pre class="lang:python decode:true ">elem_searchBox.send_keys("[検索したいキーワード]")</pre>
<p> </p>
<p>例えば、検索したいキーワードに&#8221;今日の献立&#8221;と入力したい場合、</p>
<pre class="lang:python decode:true ">elem_searchBox.send_keys("今日の献立")</pre>
<p> </p>
<p>実行してみると、</p>
<figure id="attachment_mmd_4804" class="wp-block-image aligncenter"><img decoding="async" width="918" height="604" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/f36fc0458607842cbf0775516687491b.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<h2>検索ボタンの要素を取得し実行</h2>
<p>ここまでできたら、後は実際に検索をするのみです。</p>
<p>検索ボックスを取得した要領で、検索ボタンを取得していきます。</p>
<p> </p>
<p>ちなみに検索ボタンは、以下のようにGoogleのページでは構成されています。</p>
<p> </p>
<figure id="attachment_mmd_4805" class="wp-block-image aligncenter"><img decoding="async" width="540" height="62" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/e99cc3808964d9e08ec8fb27d43842de.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>同様に、find_element_by_nameメソッドを使用して、検索ボタンを取得します。</p>
<p> </p>
<p>コードで表すと</p>
<pre class="lang:python decode:true ">elem_btnSearch = browser.find_element_by_name('btnK')</pre>
<p>となります。</p>
<p> </p>
<p>これで検索ボタンを取得することができました。</p>
<p>次は、取得した検索ボタンを押すにはどうしたらいいでしょうか？</p>
<p> </p>
<p>これもseleniumでサポートされているメソッドである、click()メソッドを使用することで、</p>
<p>押すことができます。</p>
<p> </p>
<p>こんな風に</p>
<pre class="lang:python decode:true ">elem_btnSearch.click()</pre>
<p> </p>
<p>実行すると</p>
<figure id="attachment_mmd_4807" class="wp-block-image aligncenter"><img decoding="async" width="977" height="1020" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/b1db37a1df6c6332fc8bdf704e9d1e49.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>検索ボタンを押して、検索をすることができました。</p>
<p> </p>
<p>さて、ここからが本題です。</p>
<p>検索した結果を、取得していきたいと思います。</p>
<p> </p>
<h2>検索した結果をまとめて取得</h2>
<p> </p>
<p>1件1件の検索結果は、調べてみると、</p>
<figure id="attachment_mmd_4808" class="wp-block-image aligncenter"><img decoding="async" width="680" height="143" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/1249f2682be7181f6a6266c99ee5cae6.png" class="attachment-680x216 size-680x216" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<div class="sp-info">class=&#8221;MjjYud&#8221;</div>
<p>どうやら、classタグの&#8221;MjjYud&#8221;で統一されているようです。</p>
<p>つまり、これを複数取得すれば、検索結果をまとめて得ることができそうです。</p>
<p> </p>
<p>複数取得するには、find_element<span style="color: #ff0000">s</span>_by_class_nameメソッドを使います。</p>
<p>先ほどとは違い、find_elementの後にsが付いています。</p>
<p>sが付くことで同名のオブジェクトを複数取得することができます。</p>
<p> </p>
<p>また、class_nameでは、classタグの引数に渡された値を持つオブジェクトを</p>
<p>取得してくれます。</p>
<p>したがって、MjjYudを持つ同名のオブジェクトをまとめて取得することができます。</p>
<p> </p>
<p>コードで表すと</p>
<pre class="lang:python decode:true ">elems_rec = browser.find_elements_by_class_name('MjjYud')</pre>
<p> </p>
<p>結果がいくつ収められているか確認してみます。</p>
<pre class="lang:python decode:true">elems_rec = browser.find_elements_by_class_name('MjjYud')
len(elems_rec)</pre>
<p> </p>
<figure id="attachment_mmd_4809" class="wp-block-image aligncenter"><img decoding="async" width="274" height="78" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/ad328257df3c27d0237be29c2f1fd87c.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>elems_recには11個のMjjYudを持つオブジェクト(検索結果)が</p>
<p>代入されているのがわかります。</p>
<p> </p>
<p>ここまでで検索結果をまとめて、取得することができました。</p>
<p> </p>
<p>最後に、ここからタイトルとページのURLを取得して、一覧を作成していきます。</p>
<p> </p>
<h2>検索結果のタイトルとページのURLを取得</h2>
<p>下図におけるタイトルとURLを取得していきます。</p>
<p>先ほどの複数取得した結果の1つから、タイトルとページのURLを抜き出してみます。</p>
<figure id="attachment_mmd_4810" class="wp-block-image aligncenter"><img decoding="async" width="680" height="407" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/90b0dfa136419ccc91fda6fec27764ca.png" class="attachment-680x612 size-680x612" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>まず、タイトルについては、</p>
<figure id="attachment_mmd_4814" class="wp-block-image aligncenter"><img decoding="async" width="380" height="226" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/88ed93005e0cb97394dcb2f41037a9e6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>どうやら、h3タグに収められているようです。</p>
<p>※今回の検索では、いずれもh3タグに収められていました。</p>
<p> </p>
<p>URLについては、</p>
<figure id="attachment_mmd_4812" class="wp-block-image aligncenter"><img decoding="async" width="538" height="108" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/1229c317e01c766a53c2709efe066b18.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>aタグのhref属性にURLが記述されているようです。</p>
<p> </p>
<p>もしくは、</p>
<figure id="attachment_mmd_4813" class="wp-block-image aligncenter"><img decoding="async" width="358" height="110" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/085f435ecdb57e7076774ccbc381f72e.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>citeタグからもURLが取得できそうです。</p>
<p> </p>
<p>タイトルもURLもいずれもHTML構成でいうとaタグの中に含まれていますね。</p>
<p>そのため、aタグを起点にそれぞれの情報を抽出していきます。</p>
<p> </p>
<h3>タイトルの取得</h3>
<pre class="lang:python decode:true">elem_title = elems_rec[0].find_element_by_tag_name('a').find_element_by_tag_name('h3')
</pre>
<p> </p>
<h3>URLの取得</h3>
<pre class="lang:python decode:true">elem_Url = elems_rec[0].find_element_by_tag_name('a').get_attribute('href')</pre>
<p> </p>
<p>検索結果が代入されたelems_rec変数の1番目の検索結果から、</p>
<p>タイトルとURLを抽出しています。</p>
<p> </p>
<p>タイトルでは、aタグを起点にh3タグの情報を取得しています。</p>
<p>一方でURLは、aタグに含まれるhref属性の情報を取得しています。</p>
<p> </p>
<p>最終的には、結果を辞書変数に代入していきます。</p>
<pre class="lang:python decode:true">dictRec = {elem_title.text:elem_Url}</pre>
<p> </p>
<figure id="attachment_mmd_4816" class="wp-block-image aligncenter"><img decoding="async" width="872" height="64" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/485aac62cea3d548d1555ce3bfa037e6-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>あとは、これをループ処理を駆使すれば、検索結果一覧が取得できます。</p>
<pre class="lang:python decode:true">dictRec = {}
for elem_tag in elems_rec:
    try:
        elem_Url = elem_tag.find_element_by_tag_name('a').get_attribute('href')
        elem_title = elem_tag.find_element_by_tag_name('a').find_element_by_tag_name('h3')
        dictRec[elem_title.text] = elem_Url
    except Exception as e:
        continue</pre>
<p>※一部でエラーが発生するため、try~exceptで例外をキャッチし、</p>
<p>ループ内を全ての検索結果が1回は処理されるようにしています。</p>
<p> </p>
<p>結果は下図のようになります。</p>
<figure id="attachment_mmd_4817" class="wp-block-image aligncenter"><img decoding="async" width="680" height="119" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/aeb80bad1055d60bd4b8dc8204f77f1c.png" class="attachment-680x180 size-680x180" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>ちなみにエラーとなっていたのが、下図の赤枠の部分です。</p>
<p>こちらは、MjjYudは同じなのですが、以降のタグ構成が変わっており、</p>
<p>正しく取得ができないため、エラーとなってしまいます。</p>
<p>※もう少し検証が必要ですね……。</p>
<figure id="attachment_mmd_4818" class="wp-block-image aligncenter"><img decoding="async" width="680" height="718" src="https://dreamparadaisu.com/wp-content/uploads/2022/11/51e8fc29fa61692e70bc4c925b602ad0.png" class="attachment-680x1024 size-680x1024" alt="" loading="lazy" align="center" /></figure>
<p> </p>
<p>エラーは出ましたが、何とか、まとめて取得することができました。</p>
<p> </p>
<h1>まとめ</h1>
<p>Python + Seleniumを活用して、Google検索した結果をまとめて取得し変数に格納しておく</p>
<p>方法について簡単に紹介していきました。</p>
<p> </p>
<p>外部ファイルへの出力も、複数取得した検索結果から、最終的にタイトルとURLを取得した、ペアを1行ずつに落とし込めば、ファイル出力も可能です。</p>
<p> </p>
<p>本記事で、Seleniumを扱う場合の工夫など参考にできる部分があると嬉しいです。</p>
<p> </p>
<p>最後までお読みいただきありがとうございます。</p>
<p> </p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong> <div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="3314"
					data-ulike-nonce="7e1009c421"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_3314"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_44/">【Python勉強会】Seleniumを使ってGoogle検索した結果を取得</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3314</post-id>	</item>
		<item>
		<title>【Python勉強会】与えられた数値が偶数か奇数かを判定する方法</title>
		<link>https://dreamparadaisu.com/python_43/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_43</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Fri, 26 Aug 2022 16:50:57 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[パソコン]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[入門]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=4525</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、初心に戻ってPythonで偶数か奇数かを判定する方法を紹介し、 プログラムを作っていきます。 &#160; これ、意外とプログラミング学びたての人が躓きやすかったりする上、...</p>
The post <a href="https://dreamparadaisu.com/python_43/">【Python勉強会】与えられた数値が偶数か奇数かを判定する方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、初心に戻ってPythonで偶数か奇数かを判定する方法を紹介し、</p>
<p>プログラムを作っていきます。</p>
<p>&nbsp;</p>
<p>これ、意外とプログラミング学びたての人が躓きやすかったりする上、</p>
<p>練習問題では割と早期に出てきますね。ここで挫折する人も多いはず！</p>
<p>&nbsp;</p>
<p>ということで、紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_42/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_9-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_9-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_9-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_9-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_42/" class="blog-card-title-link">【Python勉強会】1つの.pyファイルで練習問題を解く効率的な方法</a></div><div class="blog-card-excerpt">プログラミングにおいて練習問題を解くのは誰しもが通る道だと思ってます。ただ練習問題って数も多い上、1つ1つに対してプログラムファイルを作成して管理するのって大変ですよね？そんな時に筆者が取り組んでいる方法を紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_42/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_42/" alt="" /></a></div><div class="blog-card-date">2022-08-21 03:18</div></div></div>
<p>&nbsp;</p>
<h1>偶数・奇数の定義</h1>
<p>定義も何も、小学生高学年以上(小学3年生ぐらいから)なら知っての通り、</p>
<p>ある数字を2で割った時に、<span class="red-under"><span style="color: #ff0000">割り切れる場合</span>と<span style="color: #ff0000">割り切れない場合</span></span>ってありますよね。</p>
<p>ここでいう割り切れているとは、余りが0のことを指します。</p>
<p>&nbsp;</p>
<p><span class="red-under">割り切れる場合</span>の、数字を<strong><span style="color: #ff0000;font-size: 20px">偶数</span></strong>っていいます。</p>
<p>⇒　例) ２は2で割り切れるので偶数ですね。</p>
<p>&nbsp;</p>
<p><span class="red-under">割り切れない場合</span>の数字を<strong><span style="color: #ff0000;font-size: 20px">奇数</span></strong>っていいます。</p>
<p>つまり、あまりが発生する数字は奇数になりますね。</p>
<p>⇒　例) 3は2で割り切ることができないので奇数ですね。</p>
<p>&nbsp;</p>
<p>数式で表すと、</p>
<p>&nbsp;</p>
<p><span style="font-size: 18px">$ある数字　÷　2　=　？$</span></p>
<p>&nbsp;</p>
<p>右辺の値が、0であれば割り切れているので<span style="color: #ff0000"><strong><span style="font-size: 20px">偶数</span></strong></span></p>
<p>0以外であれば、割り切れていないので<strong><span style="font-size: 20px;color: #ff0000">奇数</span></strong>になります。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1>偶数・奇数の判定をプログラミングで表すと？</h1>
<p>前述で偶数と奇数が何者なのかわかりました。</p>
<p>2で割り切れれば、偶数、割り切れなければ奇数でしたね。</p>
<p>&nbsp;</p>
<p>このことから、パターンがあることがわかります。</p>
<p>これを置き換えると、<strong><span class="marker-under">何らかの条件</span></strong>があることがわかります。</p>
<p>&nbsp;</p>
<p>ここでいう条件は、<span class="marker-under"><strong>2で割り切れるかどうか</strong></span>になります。</p>
<p>&nbsp;</p>
<p>この条件をプログラムに組み込んであげることができれば、</p>
<p>偶数と奇数を判定させることができますね。</p>
<p>&nbsp;</p>
<p>さて、プログラムに条件を組み込む…にあたって、何が必要かを考えていくことになります。</p>
<p>(言葉が難しいですね。。。)</p>
<p>&nbsp;</p>
<p>プログラムでは、与えられる条件によって動作(処理)を変える場合が、</p>
<p>モノによってはあります。例えば、家庭にあるエアコンで説明すると、</p>
<p>&nbsp;</p>
<p>エアコンには、リモコンがありますね。このリモコンよく見ると、</p>
<p>&#8220;<strong>冷房</strong>&#8220;、&#8221;<strong>暖房</strong>&#8220;、&#8221;<strong>除湿</strong>&#8220;といったボタンがあります。</p>
<p>これらのいずれかを押すことで、その機能を使うことができます。</p>
<p>&nbsp;</p>
<p>冷房を押すと、エアコンから冷気が流れ、部屋の温度を下げてくれますね。</p>
<p>一方で暖房を押すと、エアコンから暖気が流れ、部屋の温度を上げてくれます。</p>
<p>&nbsp;</p>
<p>このように、あるボタンを押すと、それに合わせた動作をしてくれます。</p>
<p>これが条件による分岐を表しています。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_4531" class="wp-block-image aligncenter"><img decoding="async" width="1008" height="679" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>これを偶数と奇数に当てはめてみると、</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_4532" class="wp-block-image aligncenter"><img decoding="async" width="1008" height="679" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>こんな感じですね、あとはこれをプログラムコードで表せれば、</p>
<p>偶数と奇数を判定できますね。</p>
<p>&nbsp;</p>
<h1>偶数と奇数を判定するプログラムの実装</h1>
<p>&nbsp;</p>
<p>それでは、条件分岐について、Pythonで実装する場合は、以下のように表現できます。</p>
<p><span style="font-size: 16px">if <span style="color: #ff0000">条件式</span> :</span></p>
<p><span style="font-size: 16px">    <span style="color: #0000ff">処理1</span></span></p>
<p><span style="font-size: 16px">else :</span></p>
<p><span style="font-size: 16px">    <span style="color: #0000ff">処理2</span></span></p>
<p>というような記述で表現ができます。</p>
<p>&nbsp;</p>
<p>詳しくは、こちらで解説してるので、興味のある方は一度ご覧ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_7/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_7/" class="blog-card-title-link">【Python勉強会】if文の使い方をさらっと紹介～制御構文編①～</a></div><div class="blog-card-excerpt">Pythonを勉強したてで条件分岐の使い方がわからない？といった悩みはないでしょうか？また条件分岐でつまづいてプログラムを挫折してしまったなどの悩みについて、解決ができるように条件分岐であるif文についてさらっと紹介をしています。初学者や悩まれている方の少しでも参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_7/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_7/" alt="" /></a></div><div class="blog-card-date">2020-08-27 01:03</div></div></div>
<p>&nbsp;</p>
<p>条件式には、先ほどの&#8221;ボタンがON&#8221;や&#8221;3 ÷2 = ?&#8221;が入ります。</p>
<p>条件式に当てはまる場合は、処理1が動作し、当てはまらない場合は処理2が動作します。</p>
<p>&nbsp;</p>
<p>これを2で割り切れるかどうかで当てはめてみると、</p>
<p>&nbsp;</p>
<p>if <span style="color: #0000ff">X ÷ 2 = 0(条件式)</span>:</p>
<p><span style="color: #ff6600">割り切れる場合の処理(処理1)</span></p>
<p>else:</p>
<p><span style="color: #ff6600">割り切れない場合の処理(処理2)</span></p>
<p>※()内の表記は補足</p>
<p>ちなみに&#8221;X&#8221;は与えられた&#8221;ある数字&#8221;になります。</p>
<p>&nbsp;</p>
<p>と、こんな風に記述することができますね！</p>
<p>こうして1つずつを当てはめていくと簡単ですね。</p>
<p>図に書いて、文法に落とし込んでいくとわかりやすいですよ。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_4535" class="wp-block-image aligncenter"><img decoding="async" width="1008" height="679" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>Pythonで表現</h2>
<p>これを正しく、Pythonで表現すると、以下の通りになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">X = int(input())

if X % 2 == 0:
    print("偶数です")
else:
    print("奇数です")</pre><p>
&nbsp;</p>
<p>また、図で表すと</p>
<figure id="attachment_mmd_4538" class="wp-block-image aligncenter"><img decoding="async" width="680" height="393" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_5.png" class="attachment-680x592 size-680x592" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>いくつか補足すると、</p>
<p>&nbsp;</p>
<p><strong>print()</strong>は<span class="red-under">()内の値を出力してくれる関数</span>です。</p>
<p>ここでは、偶数であれば、&#8221;偶数です&#8221;、奇数であれば&#8221;奇数です&#8221;と出力してくれます。</p>
<p>また、Xは与えられた数字が代入されます。</p>
<p>&nbsp;</p>
<p><strong>input()</strong>では、私たちユーザが何らかの数字を入力した結果をXに代入します。</p>
<p><strong>int()</strong>されているのは、<span class="red-under">与えられた結果は文字として扱われてしまう</span>ので、</p>
<p><span class="red-under">数字として扱えるように変換</span>をします。</p>
<p>&nbsp;</p>
<p>条件式として記述した、X % 2 = 0は、Pythonでは割り算は、</p>
<p>&#8220;<span style="color: #ff0000"><strong>/(スラッシュ)</strong></span>&#8220;で表されるのですが、偶数と奇数を判定する場合、</p>
<p>余りが0であるかどうかが判断のポイントとなります。</p>
<p>&nbsp;</p>
<p>X <span style="font-size: 18px;color: #ff0000"><strong>/</strong></span> 2としてしまうと、結果としては&#8221;<span style="color: #ff0000"><strong>商</strong></span>&#8220;が返されてしまうため、</p>
<p>期待する結果が返ってきません。</p>
<p>&nbsp;</p>
<p>そのため、X <strong><span style="font-size: 18px;color: #ff0000">%</span></strong> 2とすることで&#8221;<span style="color: #ff0000"><strong>余り</strong></span>&#8220;を取得しています。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_4537" class="wp-block-image aligncenter"><img decoding="async" width="418" height="330" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/photo_4-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3HKIIJ+D3K36+46GE+64Z8X" rel="nofollow">
<img decoding="async" class="aligncenter" src="https://www25.a8.net/svt/bgt?aid=210909115022&amp;wid=001&amp;eno=01&amp;mid=s00000019499001031000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img decoding="async" class="aligncenter" src="https://www10.a8.net/0.gif?a8mat=3HKIIJ+D3K36+46GE+64Z8X" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h2>関数化してみる</h2>
<p>ちょこっと応用的なことをしてみます。先ほど書いたプログラムでは、汎用性がなく、</p>
<p>いつでも利用したいってなった時、いちいち書いていかないといけません。</p>
<p>&nbsp;</p>
<p>それだと、面倒くさいので、いつでも呼び出せるよう関数化しちゃいます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">def IsOddOrEven(number):
    if number % 2 == 0:
        return true
    else:
        return false</pre><p>
&nbsp;</p>
<p>関数を呼び出した時、trueが返ってきたら<strong>偶数</strong>でfalseが返ってきたら<strong>奇数</strong>になります。</p>
<p>意外と使い道はあるかと思います。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>例えをお見せしながら、説明していきましたが、難しいですね。</p>
<p>かえってわかりづらくなってしまったかもしれません。</p>
<p>&nbsp;</p>
<p>今回大事なのは、条件の分岐、Pythonで表現すると、if文になります。</p>
<p>これさえ、覚えておけば、どうにか偶数、奇数の判定はできます。</p>
<p>条件分岐のいろいろについてはこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_7/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_7/" class="blog-card-title-link">【Python勉強会】if文の使い方をさらっと紹介～制御構文編①～</a></div><div class="blog-card-excerpt">Pythonを勉強したてで条件分岐の使い方がわからない？といった悩みはないでしょうか？また条件分岐でつまづいてプログラムを挫折してしまったなどの悩みについて、解決ができるように条件分岐であるif文についてさらっと紹介をしています。初学者や悩まれている方の少しでも参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_7/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_7/" alt="" /></a></div><div class="blog-card-date">2020-08-27 01:03</div></div></div>
<p>&nbsp;</p>
<p>更には、これを関数化することで、いつでも判定することができるコードの完成です。</p>
<p>関数については、こちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_19/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_19/" class="blog-card-title-link">【Python勉強会】関数編①</a></div><div class="blog-card-excerpt">Pythonにおける関数の作り方(定義の仕方)を簡単に紹介しています。関数を覚えると、コードの可読性向上にもつながったり、問題が起きている場所の特定が容易になったり、再度利用することに対する利便性向上といった様々なメリットがあります。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_19/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_19/" alt="" /></a></div><div class="blog-card-date">2020-09-17 00:05</div></div></div>
<p>&nbsp;</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_20/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_20/" class="blog-card-title-link">Python勉強会～関数編②～</a></div><div class="blog-card-excerpt">関数に渡す引数にはどんな引数があるか、それぞれ紹介をしています。使い方や書き方を覚えることでさらにステップアップをしていきましょう。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_20/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_20/" alt="" /></a></div><div class="blog-card-date">2020-09-18 23:58</div></div></div>
<p>&nbsp;</p>
<p>まずは、書いてみて動き方がわかってきたら、</p>
<p>どんなことができるのか考えてみるといいです。</p>
<p>&nbsp;</p>
<p>最後までお読みいただきありがとうございます。</p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="4525"
					data-ulike-nonce="f06e4ea92a"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_4525"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_43/">【Python勉強会】与えられた数値が偶数か奇数かを判定する方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4525</post-id>	</item>
		<item>
		<title>【Python勉強会】1つの.pyファイルで練習問題を解く効率的な方法</title>
		<link>https://dreamparadaisu.com/python_42/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_42</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 20 Aug 2022 18:18:26 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[パソコン]]></category>
		<category><![CDATA[プログラム]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=4504</guid>

					<description><![CDATA[<p>どうも！リョクちゃです！ &#160; 今回は、プログラミングの上達において練習問題を解くことって大事ですよね。 皆さんは、練習問題を解くとき、どのように解かれていますか？ &#160; 「練習問題ごとに1つの.pyファ...</p>
The post <a href="https://dreamparadaisu.com/python_42/">【Python勉強会】1つの.pyファイルで練習問題を解く効率的な方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです！</p>
<p>&nbsp;</p>
<p>今回は、プログラミングの上達において練習問題を解くことって大事ですよね。</p>
<p>皆さんは、練習問題を解くとき、どのように解かれていますか？</p>
<p>&nbsp;</p>
<p>「練習問題ごとに1つの.pyファイルを作って」解かれるのが、一般的ではないでしょうか？</p>
<p>ある時までは、筆者もそうでした。</p>
<p>&nbsp;</p>
<p>これって、練習問題が多いと、後々の管理って大変なんですよ……。</p>
<p>練習問題を解いているときは、特に気にならないんですが、後日……</p>
<p>&nbsp;</p>
<p>ファイル整理などしようとするときに、ファイル数が多いことで発狂してしまいますね。</p>
<p>※練習問題が決まったフォルダに入っていれば、フォルダごと削除してしまえばいいのですが</p>
<p>それも非効率ですよね。</p>
<p>&nbsp;</p>
<p>そんな時に、どうしたらいいか？</p>
<p>1つのファイルで練習問題を管理すればいいじゃないか！</p>
<p>ということで、1つのファイルで練習問題を管理する方法を紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_41/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_title-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_title-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_title-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_title-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_41/" class="blog-card-title-link">【Python勉強会】Web上の表をExcelに出力してみた</a></div><div class="blog-card-excerpt">SeleniumとPandasを活用して、Web上に表示されるテーブルデータ(以下、表)を取得してExcelに出力する方法を簡単に紹介しています。Web上の表を簡単に取得してExcelで保存してみたいというニーズがあるのであれば、参考にしていただけたらと思います。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_41/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_41/" alt="" /></a></div><div class="blog-card-date">2022-07-19 06:00</div></div></div>
<p>&nbsp;</p>
<h1>1つのpyファイルで練習問題を管理</h1>
<p>&nbsp;</p>
<p>まず筆者の環境は、VSCodeをメインで使っています。</p>
<p>そのため、<span class="red-under"><strong>本記事はVSCodeを基に進めていきます。</strong></span></p>
<p>&nbsp;</p>
<p>以降は、練習問題を解いていくうえで、ファイルを作成し、</p>
<p>実際に手順を追って説明します。</p>
<p>&nbsp;</p>
<p>今回、練習問題で使用させていただくサイトは、こちらになります。</p>
<p><a href="https://gotutiyan.hatenablog.com/entry/2020/04/14/174007">【python3.x】 練習問題55本ノック【問題のみ】</a></p>
<p>ありがとうございます。</p>
<h2>練習問題用にpyファイルを作成</h2>
<p>それでは、VSCodeを起動します。</p>
<p>起動したら、メインで使用されているワークスペースもしくはサブのワークスペースに</p>
<p>練習問題用のフォルダをローカルの適当な場所に作成しておき、追加しておきます。</p>
<p>&nbsp;</p>
<p>筆者の場合、Eドライブに&#8221;Practice&#8221;フォルダを作成し、</p>
<p>このフォルダをワークスペースに追加しています。</p>
<figure id="attachment_mmd_4507" class="wp-block-image aligncenter"><img decoding="async" width="642" height="356" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_1.png" class="attachment-642x568 size-642x568" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>追加出来たら、Practiceに今回、対象となる練習問題用のファイルを新たに作成します。</p>
<figure id="attachment_mmd_4508" class="wp-block-image aligncenter"><img decoding="async" width="530" height="1016" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>今回は、「python_55.py」という名前のファイルを作成しました。</p>
<figure id="attachment_mmd_4509" class="wp-block-image aligncenter"><img decoding="async" width="680" height="413" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_3.png" class="attachment-680x622 size-680x622" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>作成出来たら、pyファイルに練習問題を解くコードを書いていきます。</p>
<p>&nbsp;</p>
<h2>練習問題を効率的に解く</h2>
<p>効率的にファイルを管理する上で、1つのファイルで行うといいました。</p>
<p>例えば、下図の問題を解くとき、皆さんなら、どうやってファイルに書いていきますか？</p>
<figure id="attachment_mmd_4510" class="wp-block-image aligncenter"><img decoding="async" width="522" height="553" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>普通に解く</h2>
<p>まずは、普通に解くため、書いていきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag"># 1 変数
# xという変数に2を代入し，それを3倍した数を出力してください．
# 期待する出力：6

x = 2
print( x * 3)

# 2 swap
# 変数aに100を代入し，変数bに200を代入します．
# その後，両者の値を入れ替えて，aに200，bに100が代入されているようにしてください．
# 出力としてはaとbを出力してください．
# 出力形式は問いませんが，print(a,b)とすると，空白区切で出力できます
# 期待する出力の一例：200 100

a = 100
b = 200
a, b = b, a
print(a, b)

# 3. 四則演算+α
# 変数aに10を代入，変数bに2を代入し，aとbの和，差，積，商を出力してください．
# 出力形式は問いません．また，商の値が小数か整数かは問いません．
# 期待する出力の一例：12 8 20 5.0

a = 10
b = 2

print(a + b, a - b, a * b, a / b)</pre><p>
このようになります。これを、一度にすべて実行すると、</p>
<p>print()の()の中が期待する出力として、出力されるのですが、</p>
<p>1つの問題を見たいとき、例えば、1.変数の期待する出力だけを見たいとき</p>
<p>この場合、2,3はコメントアウトしなくてはいけません。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag"># 1 変数
# xという変数に2を代入し，それを3倍した数を出力してください．
# 期待する出力：6

x = 2
print( x * 3)

# 2 swap
# 変数aに100を代入し，変数bに200を代入します．
# その後，両者の値を入れ替えて，aに200，bに100が代入されているようにしてください．
# 出力としてはaとbを出力してください．
# 出力形式は問いませんが，print(a,b)とすると，空白区切で出力できます
# 期待する出力の一例：200 100

# a = 100
# b = 200
# a, b = b, a
# print(a, b)

# 3. 四則演算+α
# 変数aに10を代入，変数bに2を代入し，aとbの和，差，積，商を出力してください．
# 出力形式は問いません．また，商の値が小数か整数かは問いません．
# 期待する出力の一例：12 8 20 5.0

# a = 10
# b = 2

# print(a + b, a - b, a * b, a / b)</pre><p>
&nbsp;</p>
<p>これって、いちいちコメントアウトしないといけないので大変ですね。</p>
<p>練習問題に従うので、あまり気にはしませんが、汎用性も持たせたくなりませんか？</p>
<p>&nbsp;</p>
<p>変数に直接値を代入するのではなく、</p>
<p>必要に応じて値を変えて出力がどうなるかも気になりますよね。</p>
<p>&nbsp;</p>
<h2>関数を駆使して解く</h2>
<p>&nbsp;</p>
<p>こんな時に汎用性を持たせた効率的に解く方法として、関数を使うことが挙げられます。</p>
<p>例えば、先ほどの問題を関数を駆使して、手を加えると、
</p><pre class="urvanov-syntax-highlighter-plain-tag"># 1 変数
# xという変数に2を代入し，それを3倍した数を出力してください．
# 期待する出力：6

def hensu(x, c):
    print(x * c)

# 2 swap
# 変数aに100を代入し，変数bに200を代入します．
# その後，両者の値を入れ替えて，aに200，bに100が代入されているようにしてください．
# 出力としてはaとbを出力してください．
# 出力形式は問いませんが，print(a,b)とすると，空白区切で出力できます
# 期待する出力の一例：200 100

def swap(a, b):
    a,b = b,a # 入れ替え
    print(a, b)

# 3. 四則演算+α
# 変数aに10を代入，変数bに2を代入し，aとbの和，差，積，商を出力してください．
# 出力形式は問いません．また，商の値が小数か整数かは問いません．
# 期待する出力の一例：12 8 20 5.0

def shisokuenzan(a, b):
    print(a + b, a - b, a * b, a / b)</pre><p>
こんな風に、書き換えることができます。</p>
<p>どうでしょう。</p>
<p>&nbsp;</p>
<p>関数に書き換えることで、関数を呼び出すときに好きな値でテストをすることが</p>
<p>できるようになります。</p>
<p>また、呼び出すだけで、ソースをコメントアウトすることはなくなります。</p>
<p>呼び出したい関数を変える時に場合によっては、コメントアウトするかもしれないですね。</p>
<p>&nbsp;</p>
<p>では、1.変数の問題を呼びだしてみます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#################################################
#メイン処理                                      #
#################################################
hensu(2, 3)

# 出力：6</pre><p>
このようになります。この、メイン処理に練習問題を関数化し、呼び出すことで</p>
<p>好きな練習問題を呼び出せます。また同じ変数を使うことも可能です。</p>
<p>関数内で使う場合、変数の適用範囲が異なるため。</p>
<p>&nbsp;</p>
<p>筆者的にはやみくもに練習問題のソースを書いては、コメントアウトをするのではなく</p>
<p>関数を使って、練習問題を解くようにするのが気に入っています。</p>
<p>&nbsp;</p>
<h2>関数化の場合に、Docstringを残す</h2>
<p>ただ練習問題を関数化するのではなく、わかりやすいように説明を残しておきます。</p>
<p>VSCodeでは、拡張機能をインストールすることで、便利に使える機能が充実しています。</p>
<p>&nbsp;</p>
<p>説明に関しては、Docstringを使います。</p>
<p>これは、関数などの仕様を説明するために定義に基づいて記述する記法になります。</p>
<p>&nbsp;</p>
<p>Pythonでは、&#8221;&#8221;&#8221;(トリプルクォート文字列)を関数内で打ち込むことで、</p>
<p>生成することができます。</p>
<p>&nbsp;</p>
<p>また、これを便利に定義されたテンプレートを呼び出せる拡張機能が、</p>
<p>VSCodeではあります。</p>
<p>&nbsp;</p>
<p>それが、「autoDocstring &#8211; Python Docstring Generator」になります。</p>
<figure id="attachment_mmd_4511" class="wp-block-image aligncenter"><img decoding="async" width="680" height="150" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_5.png" class="attachment-680x225 size-680x225" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>これをインストールしておくことで、定義されたDocstringを呼び出すことができます。</p>
<p>&nbsp;</p>
<p>使い方は、</p>
<p>関数内で、&#8221;&#8221;&#8221;(トリプルクウォート)を打つと、「Generate Docstring」と出てくるので、</p>
<p>選択して、Enterキーを押します。</p>
<figure id="attachment_mmd_4512" class="wp-block-image aligncenter"><img decoding="async" width="531" height="84" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>すると、以下のようにDocstringが生成されます。</p>
<figure id="attachment_mmd_4513" class="wp-block-image aligncenter"><img decoding="async" width="319" height="169" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_7.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>練習問題用の関数では、</p>
<ul>

<li>summary ⇒ 問題文を載せておきます。</li>

<li>Args ⇒ 引数の説明を載せておきます。</li>
</ul>
<p>を載せておくことで、わかりやすく且つ練習問題の管理がしやすくなります。</p>
<figure id="attachment_mmd_4514" class="wp-block-image aligncenter"><img decoding="async" width="467" height="203" src="https://dreamparadaisu.com/wp-content/uploads/2022/08/practice_8.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>このように記述することで、練習問題の整理ができ、1つ1つ用意するよりも</p>
<p>分かりやすくなるのではないかと思います。</p>
<p>&nbsp;</p>
<p>全ての練習問題(3問)に対して、Docstringを整備すると以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">def hensu(x, c):
    """1 変数
    xという変数に2を代入し，それを3倍した数を出力してください．
    期待する出力：6

    Args:
        x (int): 問題指定の変数x
        c (int): 問題指定の、掛けたい値
    """
    print(x * c)


def swap(a, b):
    """2 swap
    変数aに100を代入し，変数bに200を代入します．
    その後，両者の値を入れ替えて，aに200，bに100が代入されているようにしてください．
    出力としてはaとbを出力してください．
    出力形式は問いませんが，print(a,b)とすると，空白区切で出力できます
    期待する出力の一例：200 100

    Args:
        a (int): 変数a
        b (int): 変数b
    """
    a,b = b,a # 入れ替え
    print(a, b)


def shisokuenzan(a, b):
    """3. 四則演算+α
    変数aに10を代入，変数bに2を代入し，aとbの和，差，積，商を出力してください．
    出力形式は問いません．また，商の値が小数か整数かは問いません．
    期待する出力の一例：12 8 20 5.0

    Args:
        a (int): 変数a
        b (int): 変数b
    """
    print(a + b, a - b, a * b, a / b)</pre><p>
&nbsp;</p>
<h1>まとめ</h1>
<p>練習問題を解く際に、1つ1つファイルを作成するのではなく、1つのファイルで</p>
<p>練習問題を関数化してしまうのが、後々効率的かなということで紹介しました。</p>
<p>&nbsp;</p>
<p>少しでもご参考になれば、嬉しいです。</p>
<p>&nbsp;</p>
<p>最後までお読みいただき、ありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="4504"
					data-ulike-nonce="d27b5caa99"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_4504"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_42/">【Python勉強会】1つの.pyファイルで練習問題を解く効率的な方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4504</post-id>	</item>
		<item>
		<title>【Python勉強会】Web上の表をExcelに出力してみた</title>
		<link>https://dreamparadaisu.com/python_41/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_41</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Mon, 18 Jul 2022 21:00:35 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=4376</guid>

					<description><![CDATA[<p>どうも！リョクちゃです！ &#160; 大変ご無沙汰しております。記事が更新できないまま、1カ月以上経過していました。 生活が激変(転職による影響)してから全然でした、、、。 &#160; とはいうものの、転職してからプ...</p>
The post <a href="https://dreamparadaisu.com/python_41/">【Python勉強会】Web上の表をExcelに出力してみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです！</p>
<p>&nbsp;</p>
<p>大変ご無沙汰しております。記事が更新できないまま、1カ月以上経過していました。</p>
<p>生活が激変(転職による影響)してから全然でした、、、。</p>
<p>&nbsp;</p>
<p>とはいうものの、転職してからプログラミングする機会がなくなってしまい、</p>
<p>全然触れていませんでした。。。</p>
<p>&nbsp;</p>
<p>さて、今回はSeleniumとPandasを活用してWeb上に表示されている表を取得し、</p>
<p>最終的にExcel形式で保存する方法について簡単に紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_40/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_17-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_17-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_17-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_17-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_40/" class="blog-card-title-link">【Python勉強会】さくらサーバで.pyファイルを実行する～レンタルサーバを活用しよう～</a></div><div class="blog-card-excerpt">前回に続き(https://dreamparadaisu.com/python_39/)さくらサーバで実際にPythonを実行してみたので記事にしています。レンタルサーバの中でもさくらサーバを活用して、Pythonを定時実行したい場合の参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_40/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_40/" alt="" /></a></div><div class="blog-card-date">2022-01-14 03:21</div></div></div>
<p>&nbsp;</p>
<div><a href="https://px.a8.net/svt/ejp?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" rel="nofollow">
<img decoding="async" class="aligncenter" src="https://www27.a8.net/svt/bgt?aid=220109907228&amp;wid=001&amp;eno=01&amp;mid=s00000001717001015000&amp;mc=1" alt="" width="468" height="60" border="0"></a>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www11.a8.net/0.gif?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" alt="" width="1" height="1" border="0"></div>
<p>&nbsp;</p>
<h1>Web上に表示されているテーブルデータ(表)</h1>
<p>下図のような表をテーブルデータと、ここでは扱っています。</p>
<figure id="attachment_mmd_4377" class="wp-block-image aligncenter"><img decoding="async" width="1023" height="985" src="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_01.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>※一例として、Yahooファイナンスのページを引用しております。</p>
<p>&nbsp;</p>
<p>Web上では、図のように表示された表をテーブルデータといいます。</p>
<p>今回は、これを取得して、Excel形式で保存をしていきます。</p>
<p>&nbsp;</p>
<h1>テーブルデータ取得への道</h1>
<p>Web上の表を取得するには、ざっと下のような流れで作業を細分化できます。</p>
<p>&nbsp;</p>
<p>①　Web上で取得したい表を形成するtableタグを探し・抽出</p>
<p>②　抽出した情報のHTMLを取得</p>
<p>③　PandasでHTMLを読込み、listに変換</p>
<p>④　listからDataFrameへ変換</p>
<p>⑤　DataFrameからExcel形式に出力(保存)</p>
<p>&nbsp;</p>
<p>①～⑤の流れを進めることで、最終的にExcel形式に出力することができちゃいます。</p>
<p>1つ1つ順を追って説明していきます。</p>
<p>※取得したい表が掲載されているURLの選定はここでは作業の流れに含んでおりません。</p>
<p>各々でURLは見つけてみて下さい。</p>
<h2>Web上で取得したい表を形成するtableタグを探し・抽出</h2>
<p>今回は、&#8221;<a href="https://kisetsumimiyori.com/toumorokoshiranking/">とうもろこしの生産量ランキング(都道府県別)</a>&#8220;のページから</p>
<p>都道府県別にまとめられたとうもろこしの生産量の表を取得していきます。</p>
<figure id="attachment_mmd_4378" class="wp-block-image aligncenter"><img decoding="async" width="572" height="780" src="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_02.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>こちらの表を取得したいと思います。</p>
<p>&nbsp;</p>
<p>まずはこの表がどんな構成でWebページ上に表示されているかを解析していきます。</p>
<p>ここではブラウザを<span style="text-decoration: underline"><strong>Chrome</strong></span>として説明していきます。</p>
<p>&nbsp;</p>
<p>Chromeで対象のURLを開き、右クリックし「検証」を押します。</p>
<p>下図のようなイメージになります。</p>
<figure id="attachment_mmd_2896" class="wp-block-image aligncenter"><img decoding="async" width="680" height="391" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/selenium_11.png" class="attachment-680x588 size-680x588" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>「検証」をクリックすると、ページを構成するHTMLがブラウザ上に表示されます。</p>
<figure id="attachment_mmd_2897" class="wp-block-image aligncenter"><img decoding="async" width="680" height="254" src="https://dreamparadaisu.com/wp-content/uploads/2021/08/selenium_12.png" class="attachment-680x382 size-680x382" alt="" loading="lazy" align="center" /></figure>
<p>HTMLから取得したい表を形成するtableタグを探していきます。</p>
<p>&nbsp;</p>
<p>今回取得したい&#8221;都道府県別とうもろこしの生産量&#8221;の表は、</p>
<p>下図に示すtableタグで表が形成されていました。</p>
<figure id="attachment_mmd_4379" class="wp-block-image aligncenter"><img decoding="async" width="680" height="405" src="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_03.png" class="attachment-680x610 size-680x610" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>このtableタグを取得するには、tableタグ上で右クリックをし、「Copy」にカーソルを当て、</p>
<p>表示される項目から今回は、「Copy selector」を選びます。(下図)</p>
<figure id="attachment_mmd_4380" class="wp-block-image aligncenter"><img decoding="async" width="680" height="482" src="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_04.png" class="attachment-680x727 size-680x727" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>これでtableタグを取得することができました。</p>
<p>&nbsp;</p>
<p>ここまでをSeleniumを活用してプログラムを書くと、以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">from selenium import webdriver

# Chromeを立ち上げる
browser = webdriver.Chrome()

# URLを設定
url = "https://kisetsumimiyori.com/toumorokoshiranking/"

# URLを表示
browser.get(url)

#　対象のURLからTable情報をゲットする
elem_tableTag = browser.find_element_by_css_selector('#entry &gt; section &gt; table')</pre><p></p>
<h2>抽出した情報のHTMLを取得</h2>
<p>抽出したTableタグを含むHTML情報を取得するには、</p>
<p>取得したTableタグのouterHTMLプロパティを取得します。</p>
<p>&nbsp;</p>
<p>この作業は、、、</p>
<p>Tableタグだけでは後続で活用するPandasでは使えないため、</p>
<p>outerHTMLで取得した情報を渡す必要があります。</p>
<p>&nbsp;</p>
<p>outerHTMLプロパティを取得するには
</p><pre class="urvanov-syntax-highlighter-plain-tag"># TableタグからouterHTMLプロパティを取得する
html = elem_tableTag.get_attribute('outerHTML')</pre><p>
&nbsp;</p>
<h2>PandasでHTMLを読込み、listに変換</h2>
<p>次にouterHTMLの情報をPandasのread_htmlメソッドを使って、list形式に変換します。</p>
<p>※当初、read_htmlメソッドで変換される形式はDataFrameかと勘違いしていました。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag"># Tableタグから抽出したouterHTML情報をPandasでlist形式へ変換
lstTable = pd.read_html(html)

# 念のため、型を確認
print(type(lstTable))

# Tableタグが取得できているか確認
print(lstTable)</pre><p>
※　import Pandas as pdを忘れずに。</p>
<p>&nbsp;</p>
<p>ここまでで、表情報の取得ができています。</p>
<figure id="attachment_mmd_4381" class="wp-block-image aligncenter"><img decoding="async" width="303" height="362" src="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_05.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>listからDataFrameへ変換</h2>
<p>ここまででExcelへ保存することをしたかったのですが、、、</p>
<p>list形式からExcelに出力するのがPandasで用意されているto_excelメソッドでは</p>
<p>できないため、DataFrameへ変換をします。</p>
<p>&nbsp;</p>
<p>list形式からDataFrameへの変換は
</p><pre class="urvanov-syntax-highlighter-plain-tag"># list形式からDataFrameへ変換
df = pd.DataFrame(data=lstTable[0])

# 念のため、型を確認
print(type(df))</pre><p>
&nbsp;</p>
<p>DataFrameへ変換するには、Pandas.DataFrameメソッドを使用します。</p>
<p>ここでは、Pandasをインポートする際にpdと呼称しているので、</p>
<p>pd.DataFrameとなっています。</p>
<p>&nbsp;</p>
<p>引数として、前述でlist形式に変換された<span style="text-decoration: underline">Table情報の0番目</span>を渡しています。</p>
<p>※Web上に複数の表があれば、もしかしたらインデックスを指定して、</p>
<p>一度のアクセス(Seleniumからの)で好きな表を取得できると思います。</p>
<p>&nbsp;</p>
<h2>DataFrameからExcel形式に出力(保存)</h2>
<p>最後にDataFrameからExcel形式に出力をしていきます。</p>
<p>ここでは、to_excelメソッドを使います。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag"># Excel形式で出力
df.to_excel('output_test.xlsx')</pre><p>
&nbsp;</p>
<p>output_test.xlsxという名前でExcelファイルとして出力がされます。</p>
<p>下図のような形で出力がされています。</p>
<figure id="attachment_mmd_4386" class="wp-block-image aligncenter"><img decoding="async" width="403" height="409" src="https://dreamparadaisu.com/wp-content/uploads/2022/07/selenium_pandas_06.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>Web上のテーブルデータ(表)をSeleniumとPandasを活用して、</p>
<p>Excel形式に出力する方法を簡単に紹介していきました。</p>
<p>&nbsp;</p>
<p>SeleniumではTableタグとそれのouterHTMLプロパティを取得し、</p>
<p>Pandasでは取得した情報をDataFrameへと変換し、Excel形式に出力</p>
<p>といった作業をそれぞれ行わせています。</p>
<p>&nbsp;</p>
<p>わざわざPandasを使わなくてもExcelへの出力はできますが、</p>
<p>モジュールを活用することで、コードを書く工数を削減できるため便利です。</p>
<p>&nbsp;</p>
<p>他にもこれを応用して様々なテーブルデータを取得することができれば、</p>
<p>Excelに出力することも可能かと思います。</p>
<p>※Tableタグがあるもの</p>
<p>&nbsp;</p>
<p>参考になれば嬉しいです。色々活用していただけたらと思います。</p>
<p>&nbsp;</p>
<p>最後までお読みいただき、ありがとうございます。</p>
<p>これからも継続して書きつづっていきます。</p>
<p>&nbsp;</p>
<p>よろしくお願いします！</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="4376"
					data-ulike-nonce="cc2ae421ce"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_4376"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_41/">【Python勉強会】Web上の表をExcelに出力してみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4376</post-id>	</item>
		<item>
		<title>【Python勉強会】さくらサーバで.pyファイルを実行する～レンタルサーバを活用しよう～</title>
		<link>https://dreamparadaisu.com/python_40/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_40</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Thu, 13 Jan 2022 18:21:58 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[パソコン]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=3556</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 前回cronの設定をしてから、設定した後に動作確認をしていなかったので 動作確認をしpythonで作成したファイルが果たして動くのか検証していきます。 &#160; ちなみに前回は...</p>
The post <a href="https://dreamparadaisu.com/python_40/">【Python勉強会】さくらサーバで.pyファイルを実行する～レンタルサーバを活用しよう～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>前回cronの設定をしてから、設定した後に動作確認をしていなかったので</p>
<p>動作確認をしpythonで作成したファイルが果たして動くのか検証していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_39/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_7-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_7-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_7-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_7-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_39/" class="blog-card-title-link">【Python勉強会】さくらサーバにおけるcronの設定~.pyファイルを動かす~</a></div><div class="blog-card-excerpt">前回(https://dreamparadaisu.com/python_38/)に続き、.pyファイルをcronで設定し動作させる方法を例を交えて簡単に紹介しています。レンタルサーバ上で定時実行する際にどうやって設定すればいいかの参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_39/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_39/" alt="" /></a></div><div class="blog-card-date">2022-01-13 03:04</div></div></div>
<p>&nbsp;</p>
<p>先に結論から述べておきますと、</p>
<div class="sp-info">結論：さくらサーバで.pyファイルを動かすことに成功!!</div>
<p>&nbsp;</p>
<div>といった結果になりました、どうしてこうなったのか、述べていきます。</div>
<p>&nbsp;</p>
<div><a href="https://px.a8.net/svt/ejp?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www27.a8.net/svt/bgt?aid=220109907228&amp;wid=001&amp;eno=01&amp;mid=s00000001717001015000&amp;mc=1" alt="" width="468" height="60" border="0"></a>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www11.a8.net/0.gif?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" alt="" width="1" height="1" border="0"></div>
<p>&nbsp;</p>
<h1>cronで設定した.pyファイルを実行</h1>
<p>&nbsp;</p>
<div>実行されているかどうかを確認するには、手っ取り早くは&#8221;Poderosa&#8221;を使って</div>
<div>確認をしていきます。</div>
<p>&nbsp;</p>
<div>Poderosaについては、こちらの記事を参考にしてみてください。</div>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_38/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_38/" class="blog-card-title-link">【Python勉強会】さくらサーバでPythonを実行できるようにしてみた</a></div><div class="blog-card-excerpt">さくらサーバでPythonを実行するにはどうしたらいいか、取り組んでみたのでまとめています。Pythonで定期実行したいけど、自分のパソコンだと電気代もかかって大変だし、そもそもサーバがないからレンタルサーバを契約して、そこで実行させたいけど、やり方がわからないといった点について参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_38/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_38/" alt="" /></a></div><div class="blog-card-date">2022-01-12 01:40</div></div></div>
<h2>Poderosaを起動</h2>
<p>まず起動し、サーバへ接続をします。</p>
<figure id="attachment_mmd_3522" class="wp-block-image aligncenter"><img decoding="async" width="680" height="381" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_4.png" class="attachment-680x574 size-680x574" alt="" loading="lazy" align="center" /></figure>
<h2>テストの準備</h2>
<div>今回、前回作成したhello.world.pyを使用します。</div>
<div>おさらいに中身は、以下になります。</div>
<p>&nbsp;</p>
<div>
<pre class="urvanov-syntax-highlighter-plain-tag">print("Hello World")</pre>
</div>
<p>&nbsp;</p>
<p>これをさくらサーバ上の任意に作成したディレクトリに保存します。</p>
<p>&nbsp;</p>
<p>ディレクトリのパスは</p>
<div class="sp-info">/home//www/</div>
<p>&nbsp;</p>
<p>今回は、&#8221;test&#8221;というディレクトリを作成し、保存しました。
</p><pre class="urvanov-syntax-highlighter-plain-tag">mkdir /home/&lt;サーバ名&gt;/www/test</pre><p>
&nbsp;</p>
<p>作成したディレクトリへ移動しておきます。</p>
<p>&nbsp;</p>
<div class="sp-info">cd </div>
<p>&nbsp;</p>
<p>例)
</p><pre class="urvanov-syntax-highlighter-plain-tag">cd /home/&lt;サーバ名&gt;/www/test</pre><p>
&nbsp;</p>
<h2>ファイルのアップロード</h2>
<p>作成したhello.world.pyを自身のPCからサーバへアップロードする場合は、</p>
<p>作業ディレクトリを作成した状態で、さくらサーバのコントロールパネルへ</p>
<p>ログインをします。</p>
<p>&nbsp;</p>
<p>必要事項を入力し、&#8221;ログイン&#8221;ボタンを押します。</p>
<figure id="attachment_mmd_3541" class="wp-block-image aligncenter"><img decoding="async" width="600" height="535" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_8.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>ログインできると下図が表示されます。</p>
<figure id="attachment_mmd_3543" class="wp-block-image aligncenter"><img decoding="async" width="680" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_10.png" class="attachment-680x715 size-680x715" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>ショートカットの中から&#8221;ファイルマネージャ&#8221;を選択し、開きます。</p>
<figure id="attachment_mmd_3561" class="wp-block-image aligncenter"><img decoding="async" width="680" height="189" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_18.png" class="attachment-680x284 size-680x284" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>先ほど作成した&#8221;test&#8221;フォルダがあるのが確認できます。</p>
<p>&#8220;test&#8221;フォルダをクリックすると、右の領域に&#8221;test&#8221;フォルダの中身を確認ができます。</p>
<p>ファイルマネージャ上でカレントのディレクトリになります。</p>
<p>&nbsp;</p>
<p>ファイルをアップロードするには、ファイルマネージャ内タブの&#8221;アップロード&#8221;を</p>
<p>クリックすることで出来ます。</p>
<figure id="attachment_mmd_3562" class="wp-block-image aligncenter"><img decoding="async" width="680" height="190" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_21.png" class="attachment-680x286 size-680x286" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>クリックすると、</p>
<figure id="attachment_mmd_3563" class="wp-block-image aligncenter"><img decoding="async" width="610" height="371" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_22.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>アップロード画面が開くので、</p>
<p>アップロードする場合は、左下の&#8221;ファイルを追加&#8221;ボタンをクリックします。</p>
<p>&nbsp;</p>
<p>クリックすると、ファイルダイアログが新たに立ち上がるので、</p>
<p>アップロードしたいファイルを選び、&#8221;開く&#8221;ボタンを押します。</p>
<p>&nbsp;</p>
<p>下図にアップロードするファイルが表示されます。</p>
<figure id="attachment_mmd_3564" class="wp-block-image aligncenter"><img decoding="async" width="945" height="575" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_23.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>表示がされたら、&#8221;アップロード開始&#8221;ボタンを押します。</p>
<figure id="attachment_mmd_3565" class="wp-block-image aligncenter"><img decoding="async" width="610" height="371" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_24.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>既に同名ファイルがアップロードされていた場合について聞いてきますので、</p>
<p>問題なければ、&#8221;はい&#8221;を押します。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_3566" class="wp-block-image aligncenter"><img decoding="async" width="950" height="568" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_25.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>状態が&#8221;<span class="red-under"><strong><span style="font-size: 18px">完了</span></strong></span>&#8220;になればファイルが正常にアップロードされました。</p>
<p>ファイルマネージャに戻り、作成したディレクトリ内に&#8221;hello.world.py&#8221;があるのが</p>
<p>確認できます。</p>
<figure id="attachment_mmd_3568" class="wp-block-image aligncenter"><img decoding="async" width="553" height="244" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2_20.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>これでテストができる準備になりました。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3N1PW3+3RQUPE+D8Y+6K735" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www24.a8.net/svt/bgt?aid=220109907228&amp;wid=001&amp;eno=01&amp;mid=s00000001717001102000&amp;mc=1" alt="" width="336" height="280" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www12.a8.net/0.gif?a8mat=3N1PW3+3RQUPE+D8Y+6K735" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h2>いざ、テスト</h2>
<p>Poderosaでは、作業ディレクトリへ移動がされている状態だと思います。</p>
<p>この状態で、hello.world.pyを実行するコマンドを打ちます。</p>
<p>&nbsp;</p>
<p>コマンドには、python3を使います。
</p><pre class="urvanov-syntax-highlighter-plain-tag">python3 hello.world.py</pre><p>
Poderosa上でコマンドを打ち、Enterキーを押して実行されるかどうか確認します。</p>
<p>&nbsp;</p>
<p>……あれ</p>
<p>&nbsp;</p>
<div class="sp-warning">-bash: python3: command not found</div>
<p>と出てきてしまいました。</p>
<p>どうやら、python3というコマンドはないとのことです。</p>
<p>&nbsp;</p>
<p>python3は絶対パスで呼んであげないといけないので、</p>
<p>以下のコマンドに書き直して実行をしてみます。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">/home/&lt;サーバ名&gt;/local/python/bin/python3 hello.world.py</pre><p>
※pythonのインストール先になるので各人によって環境が異なるので確認しておきましょう。</p>
<p>&nbsp;</p>
<p>出力結果として、</p>
<div class="sp-success">Hello World</div>
<p>と表示がされれば、正常に動かすことができています。</p>
<p>&nbsp;</p>
<p>お疲れ様です。</p>
<p>&nbsp;</p>
<p>これで.pyファイルが動かせることが確認できました。</p>
<p>&nbsp;</p>
<p>これをcronに設定することで、指定した時刻に</p>
<p>Hello Worldと出力するプログラムの実行ができます。</p>
<h1>まとめ</h1>
<div>.pyファイルをさくらサーバで実行する方法と実行確認について紹介していきました。</div>
<div>結果.pyファイルを動かすことができましたが、一部動作しないプログラムも存在するようで</div>
<div>その時は、.pyの拡張子を.cgiにすることで動作する場合もあります。</div>
<p>&nbsp;</p>
<div>.cgiは、</div>
<blockquote>
<div><strong>CGI</strong>とは、Webサーバが、Webブラウザなどからの要求に応じてプログラムを実行する仕組みの一つ。</div>
<div style="text-align: right"><a href="https://e-words.jp/w/CGI.html">CGI</a></div></blockquote>
<p>&nbsp;</p>
<div>動作形態によって拡張子を変更して、トライしてみてください。</div>
<p>&nbsp;</p>
<div>またcronの設定では、パスの設定も大事ですので気を付けてください。</div>
<div>絶対パス指定しないでpython3を打つと、command not foundになってしまいます。</div>
<p>&nbsp;</p>
<div>いちいちパスを指定するのがめんどい！という方は環境変数にPython3のパスを</div>
<div>追加してしまうのも手です。</div>
<p>&nbsp;</p>
<div>最後までお読みいただき、ありがとうございます。</div>
<div></div>
<div>

<strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong>

<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>

<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>

</div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="3556"
					data-ulike-nonce="d4604a2307"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_3556"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_40/">【Python勉強会】さくらサーバで.pyファイルを実行する～レンタルサーバを活用しよう～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3556</post-id>	</item>
		<item>
		<title>【Python勉強会】さくらサーバにおけるcronの設定~.pyファイルを動かす~</title>
		<link>https://dreamparadaisu.com/python_39/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_39</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Wed, 12 Jan 2022 18:04:25 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[パソコン]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=3539</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、cronと呼ばれるスクリプトを自動実行してくれるツールを活用して、 .pyファイルを定時実行できるようにする方法を紹介していきます。 &#160; 前回はさくらサーバでのP...</p>
The post <a href="https://dreamparadaisu.com/python_39/">【Python勉強会】さくらサーバにおけるcronの設定~.pyファイルを動かす~</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、cronと呼ばれるスクリプトを自動実行してくれるツールを活用して、</p>
<p>.pyファイルを定時実行できるようにする方法を紹介していきます。</p>
<p>&nbsp;</p>
<p>前回はさくらサーバでのPython環境を構築しました。</p>
<p>※この設定ができていることが前提条件になります。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_38/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_6-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_38/" class="blog-card-title-link">【Python勉強会】さくらサーバでPythonを実行できるようにしてみた</a></div><div class="blog-card-excerpt">さくらサーバでPythonを実行するにはどうしたらいいか、取り組んでみたのでまとめています。Pythonで定期実行したいけど、自分のパソコンだと電気代もかかって大変だし、そもそもサーバがないからレンタルサーバを契約して、そこで実行させたいけど、やり方がわからないといった点について参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_38/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_38/" alt="" /></a></div><div class="blog-card-date">2022-01-12 01:40</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www25.a8.net/svt/bgt?aid=220109907228&amp;wid=001&amp;eno=01&amp;mid=s00000001717001015000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www16.a8.net/0.gif?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" alt="" width="1" height="1" border="0" />
<h1>cronとは</h1>
<p>調べてみると</p>
<blockquote>cron とは、ジョブ（スクリプト）を自動実行するためのデーモンプロセスです。そして、Linux システムの管理を行なう場合、ログのローテートや、バックアップなど、定期的に自動実行したいジョブが数多くあります。特に、バックアップなどは、システムへの負荷が大きいため、通常は、ユーザからのアクセスが少ない、深夜や早朝に行なわれます。
<p style="text-align: right"><a href="https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html">cronの設定ガイド</a></p>
</blockquote>
<p>&nbsp;</p>
<p>今回実行させたいファイル(.pyファイル)がスクリプトにあたります。</p>
<p>&nbsp;</p>
<p>Windowsでいう、タスクスケジューラにあたりますね。</p>
<p>設定したスケジュールに従って指定されたプログラム、スクリプトを実行してくれるので。</p>
<p>&nbsp;</p>
<h1>cronの設定</h1>
<h2>さくらサーバへログイン</h2>
<p>さくらサーバ上でcronの設定をするには、まずさくらサーバへログインします。</p>
<figure id="attachment_mmd_3541" class="wp-block-image aligncenter"><img decoding="async" width="600" height="535" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_8.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>ログインすると、下図の画面が開きます。</p>
<figure id="attachment_mmd_3543" class="wp-block-image aligncenter"><img decoding="async" width="680" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_10.png" class="attachment-680x715 size-680x715" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>cronの設定をするには、左メニューバーのスクリプト設定から設定画面を開きます。</p>
<figure id="attachment_mmd_3542" class="wp-block-image aligncenter"><img decoding="async" width="680" height="474" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_9.png" class="attachment-680x714 size-680x714" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>スクリプト設定　→　CRON設定をクリックしていきます。</p>
<figure id="attachment_mmd_3544" class="wp-block-image aligncenter"><img decoding="async" width="461" height="384" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_11.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>CRON設定をクリックすると、下図の画面が開き設定が行えます。</p>
<figure id="attachment_mmd_3545" class="wp-block-image aligncenter"><img decoding="async" width="680" height="196" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_12.png" class="attachment-680x295 size-680x295" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>ジョブの追加</h2>
<p>では早速ジョブの追加をしていきます。</p>
<p>手始めに今回は以下の.pyファイルをジョブとして登録します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">print("Hello World")</pre><p>
&nbsp;</p>
<p>ジョブを追加するには、&#8221;スケジュールの追加&#8221;をクリックします。</p>
<p>下図の画面が表示されます。</p>
<figure id="attachment_mmd_3546" class="wp-block-image aligncenter"><img decoding="async" width="990" height="787" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_13.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>実行コマンドの設定</h2>
<p>実行コマンドでは、今回は以下のコマンドを使用します。</p>
<div class="sp-info">python3 </div>
<p>&nbsp;</p>
<p>python3コマンドを実行するには、フルパスを指定しておかないと、</p>
<p>さくらサーバではエラーになります。</p>
<p>&nbsp;</p>
<p>単にプログラムの場所(python3を書いただけ)を指定しただけでは×なので、</p>
<p>注意が必要です。</p>
<p>&nbsp;</p>
<div class="sp-danger">注意!!</div>
<p>実はこのコマンドを設定しただけでは正常に実行することができません。</p>
<p>実行したい.pyファイルがあるディレクトリまで移動しないとダメでした。</p>
<p>&nbsp;</p>
<p>移動には以下のコマンドを使用します。</p>
<div class="sp-info">cd </div>
<p>&nbsp;</p>
<p>そのため、実行コマンドは2段構えの構成になります。</p>
<p>2段構えの構成にするには、</p>
<div class="sp-info">cd ; python3 </div>
<div><span class="marker-under">&#8220;<span style="font-size: 18px"><strong>;(セミコロン)</strong></span>&#8220;を付けて区切ります。</span></div>
<div>こうすることで、cdコマンドを実行後.pyファイルを実行するコマンドが順に実行されます。</div>
<div></div>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3NLGSN+97114I+3250+6NU9D" rel="nofollow">
<img loading="lazy" decoding="async" src="https://www29.a8.net/svt/bgt?aid=221031239556&amp;wid=001&amp;eno=01&amp;mid=s00000014274001119000&amp;mc=1" alt="" width="300" height="250" border="0" /></a></p>
<img loading="lazy" decoding="async" src="https://www16.a8.net/0.gif?a8mat=3NLGSN+97114I+3250+6NU9D" alt="" width="1" height="1" border="0" />
<div></div>
<h2>実行日時の設定</h2>
<p>実行日時では、いつ実行したいのかを決める設定をします。</p>
<ul>

<li>月　：　1～12の範囲で設定</li>

<li>日　：　1～31の範囲で設定</li>

<li>時　：　0～23の範囲で設定</li>

<li>分　：　0～59の範囲で設定</li>

<li>曜　：　0～7の範囲で設定 (0:日曜日　7:土曜日)
→　さくらサーバではチェックボックスにチェック</li>
</ul>
<p>例) 5分おきにプログラムを実行したい場合、実行日時には</p>
<ul>

<li>月　：　*</li>

<li>日　：　*</li>

<li>時　：　*</li>

<li>分　：　*/5</li>

<li>曜　：　全ての曜日にチェック</li>
</ul>
<figure id="attachment_mmd_3547" class="wp-block-image aligncenter"><img decoding="async" width="906" height="272" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_14.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<div>になります。</div>
<div></div>
<div>月や日などの指定がない項目については、*を入力します。</div>
<div>何分毎にの毎が含まれる設定については、*/を入力し、その後に間隔を設定します。</div>
<div></div>
<div></div>
<div>例) 5月5日 12時30分に実行したい場合</div>
<div><figure id="attachment_mmd_3550" class="wp-block-image aligncenter"><img decoding="async" width="912" height="280" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1_15.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure></div>
<div></div>
<div></div>
<div>以上がcronの設定になります。</div>
<div></div>
<div>動作の確認は、次回まとめて行っていきます！</div>
<div></div>
<div></div>
<h1>まとめ</h1>
<div>さくらサーバで.pyファイルを実行する際のcronの設定について</div>
<div>簡単にざっくりと紹介していきました。</div>
<div></div>
<div>cronについて触りだけでも理解してもらえたら嬉しいです。</div>
<div></div>
<div>最後までお読みいただき、ありがとうございます。</div>
<div></div>
<div>

<strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong>

<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>

<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>

</div>
<div></div>
<div></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="3539"
					data-ulike-nonce="7be65bdac7"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_3539"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_39/">【Python勉強会】さくらサーバにおけるcronの設定~.pyファイルを動かす~</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3539</post-id>	</item>
		<item>
		<title>【Python勉強会】さくらサーバでPythonを実行できるようにしてみた</title>
		<link>https://dreamparadaisu.com/python_38/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_38</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Tue, 11 Jan 2022 16:40:42 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[パソコン]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=3515</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、以前にPythonで作ったプログラムを指定した時刻に動かしたく思って、 自身のパソコンで当初は行っていたのですが、やはり常時PCをつけっぱだと負担が 大きく、電気代もかかっ...</p>
The post <a href="https://dreamparadaisu.com/python_38/">【Python勉強会】さくらサーバでPythonを実行できるようにしてみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、以前にPythonで作ったプログラムを指定した時刻に動かしたく思って、</p>
<p>自身のパソコンで当初は行っていたのですが、やはり常時PCをつけっぱだと負担が</p>
<p>大きく、電気代もかかってしまうので、レンタルサーバを使ってどうにかできないか</p>
<p>検証したのでまとめていきます。</p>
<p>&nbsp;</p>
<div class="sp-info">結論：さくらサーバのスタンダードプランでPythonを走らせることに成功</div>
<p>&nbsp;</p>
<p>ちなみに前回のPython勉強会はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_37/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_7-1-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_7-1-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_7-1-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_7-1-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_37/" class="blog-card-title-link">【Python勉強会】pyファイルをアプリケーション化～作成したコードをexe化する方法～</a></div><div class="blog-card-excerpt">ふとPythonでコードを書いていて、これをアプリケーション化(.exe化)したいなと思ったことはありませんか？そんな時に使える方法を簡単に例を交えながら紹介しています。何かの参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_37/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_37/" alt="" /></a></div><div class="blog-card-date">2022-01-08 10:32</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3HI93W+DDNP6A+0K+15PMN5" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www28.a8.net/svt/bgt?aid=210803612809&amp;wid=001&amp;eno=01&amp;mid=s00000000002007006000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3HI93W+DDNP6A+0K+15PMN5" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>使用したレンタルサーバの環境</h1>
<p>以下のレンタルサーバを検証しました。</p>
<ul>

<li>サーバ名　：　さくらサーバ</li>

<li>プラン名　：　スタンダードプラン
スタンダードプラン以上でないとPythonの構築ができないので注意</li>
</ul>
<p>契約前に2週間の無償体験があるので、これを利用して実際に動作可能か検証していきます。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www26.a8.net/svt/bgt?aid=220109907228&amp;wid=001&amp;eno=01&amp;mid=s00000001717001015000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www17.a8.net/0.gif?a8mat=3N1PW3+3RQUPE+D8Y+61JSH" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<p>プランごとの価格を載せておきます。</p>

<table id="tablepress-65" class="tablepress tablepress-id-65">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">プラン名</th><th class="column-3">価格</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">ライト</td><td class="column-3">600</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">スタンダード</td><td class="column-3">1,600</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">プレミアム</td><td class="column-3">4,000</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">ビジネス</td><td class="column-3">7,000</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">ビジネスプロ</td><td class="column-3">12,000</td>
</tr>
</tbody>
</table>
<!-- #tablepress-65 from cache -->
<h2>必要な情報</h2>
<p>.pyファイルのやり取りを自身のPCとレンタルサーバ上で行うので、</p>
<p>以下の情報が必要になります。</p>
<ul>

<li>FTPサーバ名 (ドメイン名)</li>

<li>FTPアカウント</li>

<li>FTPパスフレーズ (サーバのPath(パス))</li>
</ul>
<p>SSH接続を行うので、&#8221;<a href="https://ja.osdn.net/projects/sfnet_poderosa/">Poderosa</a>&#8220;という、フリーソフトをインストールする。</p>
<p>→　Poderosa-4.4.5-bin.zipをダウンロードし、インストールしておきます。</p>
<p>&nbsp;</p>
<h1>Pythonプログラムを実行できるようにするまで</h1>
<p>&nbsp;</p>
<p>Poderosaを立ち上げ、新規SSH接続の作成をする</p>
<p>事前準備でインストールした、Poderosaを立ち上げます。</p>
<figure id="attachment_mmd_3518" class="wp-block-image aligncenter"><img decoding="async" width="944" height="532" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>ファイル　→　新規Telnet/SSH接続を押します。</p>
<figure id="attachment_mmd_3520" class="wp-block-image aligncenter"><img decoding="async" width="680" height="382" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_2-1.png" class="attachment-680x576 size-680x576" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>事前準備で用意した必要な情報を入力していきます。 <figure id="attachment_mmd_3521" class="wp-block-image aligncenter"><img decoding="async" width="680" height="382" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_3.png" class="attachment-680x576 size-680x576" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>ホスト名　→　FTPサーバ名</p>
<p>アカウント　→　FTPアカウント</p>
<p>パスフレーズ　→　サーバのパスワード(ログイン)</p>
<p>を入力し、&#8221;OK&#8221;を押します。</p>
<p>&nbsp;</p>
<p>接続が正常にいくと、下図のような画面に切り替わります。</p>
<figure id="attachment_mmd_3522" class="wp-block-image aligncenter"><img decoding="async" width="680" height="381" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_4.png" class="attachment-680x574 size-680x574" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>ログインシェルをcshからbashへ変更</h2>
<p>こちらは後に分かったのですが、cshでもできるので使い慣れた方で進めてください。</p>
<p>デフォルトでは、cshなのでbashに変更する方法を載せておきます。</p>
<p>&nbsp;</p>
<p>以降は、<span class="marker-under"><strong>bashでの方法</strong></span>についてまとめていきます。</p>
<p>&nbsp;</p>
<p>Poderosa上で$マークの後に、コマンドを入力することで</p>
<p>実行したいコマンドを走らせることができます。</p>
<p>&nbsp;</p>
<p>まず最初にcshかbashかの確認を以下のコマンドで行いましょう。</p>
<p>どのシェルを使っているのか確認をしておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">set | grep -ai version</pre><p>
&nbsp;</p>
<p>既にbashの場合は、以下のような出力になるかと思います。</p>
<div class="sp-info">BASH_VERSION = &#8216;5.0.18(3)-release&#8217;</div>
<p>&nbsp;</p>
<p>bashに変更したい場合、以下のコマンドを入力し変更します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">cash -s /usr/local/bin/bash</pre><p>
&nbsp;</p>
<h2>.bash_profileを作成する</h2>
<p>最初に設定する際は、.bash_profileが作成されていない場合がありますので、</p>
<p>作成していきます。</p>
<p>&nbsp;</p>
<p>まずエディタを開きます。</p>
<div class="sp-info">vi .bash_profile</div>
<p>下図のような画面が開きます。※最初は何も記載されていない状態になるかと思います。</p>
<figure id="attachment_mmd_3526" class="wp-block-image aligncenter"><img decoding="async" width="914" height="630" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/sakura_5-1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>主な操作方法(キーボード操作)</p>
<ul>

<li>i : 編集モード</li>

<li>ESC : 編集モード終了</li>

<li>終了は　ESC押下後　→　:wgで保存して終了</li>
</ul>
<p>エディタでは以下の設定をします。
</p><pre class="urvanov-syntax-highlighter-plain-tag">set path = ($path $HOME/local/python/bin)
setenv PYTHON $HOME/local/python/lib</pre><p>
これを入力し、保存してエディタを閉じます。</p>
<p>&nbsp;</p>
<h2>作業用のディレクトリを作成</h2>
<p>任意の場所に作業用のディレクトリを作成しておきましょう。</p>
<p>&nbsp;</p>
<div class="sp-info">mkdir -p </div>
<p>&nbsp;</p>
<p>例
</p><pre class="urvanov-syntax-highlighter-plain-tag">mkdir -p ~/work/python</pre><p>
&nbsp;</p>
<h2>作成した作業ディレクトリへ移動</h2>
<p>以下のコマンドを使って、作成した作業ディレクトリへ移動します。</p>
<div class="sp-info">cd </div>
<p>&nbsp;</p>
<p>例)
</p><pre class="urvanov-syntax-highlighter-plain-tag">cd ~/work/python</pre><p>
&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BO5NS+6GSIB6+50+4YNR7L" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www22.a8.net/svt/bgt?aid=201001384391&amp;wid=001&amp;eno=01&amp;mid=s00000000018030008000&amp;mc=1" alt="" width="300" height="250" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3BO5NS+6GSIB6+50+4YNR7L" alt="" width="1" height="1" border="0" />
<h2>Pythonファイルを取得</h2>
<p>インターネットからPythonのインストーラーを取得します。</p>
<p>取得するには以下のコマンドを使用します。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">wget --no-check-certificate https://www.python.org/ftp/python/&lt;バージョン&gt;/Python-バージョン.tgz</pre><p>
※<span class="red-under">バージョンには、取得したいバージョンを入力してください</span>。</p>
<p>&nbsp;</p>
<h2>取得した.tgzファイルを解凍</h2>
<p>解凍には、以下のコマンドを使用します。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">tar -zxvf ./Python-バージョン.tgz</pre><p>
&nbsp;</p>
<p>解凍すると、&#8221;Python-バージョン&#8221;フォルダが作成されます。</p>
<p>&nbsp;</p>
<h2>解凍したフォルダへ移動</h2>
<p>cdコマンドを使用して、解凍したフォルダへ移動します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">cd ./Python-バージョン</pre><p>
&nbsp;</p>
<h2>Pythonのインストール</h2>
<p>解凍したフォルダからPythonをインストールします。</p>
<p>以下のコマンドを使用し、設定のチェックを行います。</p>
<p>※インストール前に実行します。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">./configure CPPFLAGS = "-I/usr/local/ssl/include" LDFLAGS = "-L/usr/local/ssl/lib" --prefix = $HOME/local/python</pre><p>
&nbsp;</p>
<p>configureでは、configureという<span class="marker-under">スクリプトファイルを実行</span>します。</p>
<p>必要な環境変数やライブラリが正しく設定されているかなどのチェックを行います。</p>
<p>チェックした結果からMakeFileといったファイルが作成されます。</p>
<p>&nbsp;</p>
<p>→　configureコマンドを使えば、アプリケーションがインストールされる環境を</p>
<p>自動的に調べ、<span class="marker-under">その環境に合わせたMakeFileを自動的に作ることができます</span>。</p>
<p>&nbsp;</p>
<p>次に以下のコマンドを使用します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">make</pre><p>
&nbsp;</p>
<p>makeコマンドは、オプション無し、引数無しで実行することで、</p>
<p>MakeFileを参照し、MakeFile内のデフォルトの処理を行います。</p>
<p>※MakeFileが作成されたパスに気を付けて実行する必要があります。</p>
<p>&nbsp;</p>
<div class="sp-info">make  </div>
<p>オプションを使うことで別のファイルを参照することも可能</p>
<p>&nbsp;</p>
<p>次に以下のコマンドを使用します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">make install</pre><p>
&nbsp;</p>
<p>makeコマンドによって、コンパイルされたアプリケーションをインストールします。</p>
<p>ここでは、Pythonのインストールを行っています。</p>
<p>MakeFileに記述された、&#8221;install&#8221;というラベルから処理を実行するという動作をしています。</p>
<p>&nbsp;</p>
<h3>MakeFile</h3>
<p>コンパイル、リンクやインストールなどのルールが</p>
<p>記述されたテキストファイルのことをいいます。</p>
<p>&nbsp;</p>
<h2>設定した内容を反映</h2>
<p>以下のコマンドを使用します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">source ~/.bashrc

rehash</pre><p>
&nbsp;</p>
<h3>rehash</h3>
<p>ハッシュテーブルの再構築を行います。</p>
<blockquote>データ構造のひとつ、構造(key)と対応する値(value)のペアを単位として、

データを格納しキーを指定すると対応する値を高速に取得できる構造</blockquote>
<p>Pythonの辞書型に近しい？</p>
<p>&nbsp;</p>
<h2>installされていることを確認</h2>
<p>以下のコマンドを使用し、installされているかを確認します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">which python3</pre><p>
&nbsp;</p>
<h2>Pythonのバージョンを確認</h2>
<p>以下のコマンドを使用し、インストールされたPythonのバージョンを確認します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">python3 --version</pre><p>
&nbsp;</p>
<h2>Pythonを実行</h2>
<p>以下のコマンドを使用し、Pythonを実行します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">python3</pre><p>
&nbsp;</p>
<p>起動したら、以下の内容を打っていきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt;&gt;&gt;import sys
&gt;&gt;&gt;sys.path</pre><p>
結果が出力されていれば、問題なさそうです。</p>
<p>&nbsp;</p>
<h2>作業用ディレクトリの削除</h2>
<p>最後に作業用に作成したディレクトリを削除しておきます。</p>
<p>※特に気にならない方は残しておいても問題ないです。</p>
<p>&nbsp;</p>
<div class="sp-info">rm -r </div>
<p>&nbsp;</p>
<p>例)
</p><pre class="urvanov-syntax-highlighter-plain-tag">rm -r ~/work/python/</pre><p>
&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BQCQ7+CNGMK2+CO4+ZVD75" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www29.a8.net/svt/bgt?aid=201103855765&amp;wid=001&amp;eno=01&amp;mid=s00000001642006025000&amp;mc=1" alt="" width="728" height="90" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3BQCQ7+CNGMK2+CO4+ZVD75" alt="" width="1" height="1" border="0" />
<h1>まとめ</h1>
<p>さくらサーバ上でPythonを走らせる方法について簡単にざっくりとまとめてみました。</p>
<p>道中様々な困難に直面しましたが、なんとかレンタルサーバ上で</p>
<p>Pythonを実行させることに成功しました。</p>
<p>&nbsp;</p>
<p>これにより、指定した日時にPythonプログラムを実行させることができるようになり、</p>
<p>自宅のPCを常時起動しなくてもよくなりました……。</p>
<p>&nbsp;</p>
<p>電気代の節約につながりますね。</p>
<p>……といいたいところですが、レンタルサーバの契約費用を加味すると、</p>
<p>トントンかもしれません。</p>
<p>&nbsp;</p>
<p>※さくらサーバは比較的コスパには申し分なし、使ってみると</p>
<p>煩わしい設定などないので使いやすいかもって感じでした。</p>
<p>→ <a href="https://px.a8.net/svt/ejp?a8mat=3N1PW3+3RQUPE+D8Y+686ZM" rel="nofollow">さくらのレンタルサーバ スタンダード</a></p>
<img loading="lazy" decoding="async" src="https://www16.a8.net/0.gif?a8mat=3N1PW3+3RQUPE+D8Y+686ZM" alt="" width="1" height="1" border="0" />
<p>勉強になったのでよしとします。</p>
<p>&nbsp;</p>
<p>最後までお読みいただき、ありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="3515"
					data-ulike-nonce="2ca4db4416"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_3515"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_38/">【Python勉強会】さくらサーバでPythonを実行できるようにしてみた</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3515</post-id>	</item>
		<item>
		<title>【Python勉強会】pyファイルをアプリケーション化～作成したコードをexe化する方法～</title>
		<link>https://dreamparadaisu.com/python_37/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python_37</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 08 Jan 2022 01:32:30 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[入門]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=3484</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回はpyファイルをアプリケーション化、いわゆる.exe化する方法を 簡単に紹介していきます。 &#160; ふとコードを書いていると、Pythonってどうやってアプリケーション化...</p>
The post <a href="https://dreamparadaisu.com/python_37/">【Python勉強会】pyファイルをアプリケーション化～作成したコードをexe化する方法～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回はpyファイルをアプリケーション化、いわゆる.exe化する方法を</p>
<p>簡単に紹介していきます。</p>
<p>&nbsp;</p>
<p>ふとコードを書いていると、Pythonってどうやってアプリケーション化するんだろう？</p>
<p>と感じたことはありませんか？</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3HI93W+DDNP6A+0K+15PMN5" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www28.a8.net/svt/bgt?aid=210803612809&amp;wid=001&amp;eno=01&amp;mid=s00000000002007006000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3HI93W+DDNP6A+0K+15PMN5" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<p>調べると色々な方法があるのですが、</p>
<p>色々調べた結果個人的にわかりやすかった、使いやすかった方法を発信していきます。</p>
<p>&nbsp;</p>
<p>※アプリケーション化することで誰かに配布することもできるのでおススメです。</p>
<p>一方でファイルサイズが大きくなってしまうので注意も必要です。</p>
<p>→　<span class="marker-under">使わないパッケージなどはコードに含まない</span>ことです。</p>
<p>&nbsp;</p>
<p>ちなみに前回のPython勉強会はこちらになります。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/python_36/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-300x300.png 300w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894-120x120.png 120w, https://dreamparadaisu.com/wp-content/uploads/2020/08/python_18894.png 512w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/python_36/" class="blog-card-title-link">【Python勉強会】Seleniumのインストールをしてみた～Firefox編～</a></div><div class="blog-card-excerpt">プログラムでブラウザの操作が自動化できればいいな？って思ったことはありませんか？今回は、Pythonでブラウザ操作を自動化してくれるSeleniumというライブラリをインストール～ブラウザでURLを開くまでをFirefoxで紹介しています。何かしらの参考になれば嬉しいです。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/python_36/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/python_36/" alt="" /></a></div><div class="blog-card-date">2021-09-09 05:40</div></div></div>
<p>&nbsp;</p>
<h1>アプリケーション化するための準備</h1>
<p>動作の確認は特に今回はしないので、以下のpyファイルを.exe化していきたいと思います。
</p><pre class="urvanov-syntax-highlighter-plain-tag">print("Hello World!")</pre><p>
&nbsp;</p>
<p>作成した.pyファイルを任意のディレクトリに保存しておいてください。</p>
<p>筆者は、デスクトップ上にTestフォルダを作成し、その中にtestフォルダを作成しました。</p>
<figure id="attachment_mmd_3488" class="wp-block-image aligncenter"><img decoding="async" width="986" height="318" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>ややこしい作り方になってしまいました。</p>
<p>&nbsp;</p>
<h1>アプリケーションファイルを作成</h1>
<h2>コマンドラインを起動</h2>
<p>それではWindowsメニューの検索バー(Windows10の場合、虫眼鏡アイコンのある欄)に</p>
<p>&#8220;cmd&#8221;と打つとコマンドプロンプトが表示されるかと思います。</p>
<p>&nbsp;</p>
<p>これを立ち上げます。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3N1LZ6+3KMEQ+4ICG+5Z6WX" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www29.a8.net/svt/bgt?aid=220104834006&amp;wid=001&amp;eno=01&amp;mid=s00000021040001004000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www11.a8.net/0.gif?a8mat=3N1LZ6+3KMEQ+4ICG+5Z6WX" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h2>作業ディレクトリの移動</h2>
<p>立ち上げたコマンドプロンプト上で、先ほどHelloWorldのpyファイルを保存した</p>
<p>ディレクトリへ移動します。</p>
<p>&nbsp;</p>
<p>移動するには、cdコマンドを使います。</p>
<p>&nbsp;</p>
<div class="sp-info">cd C:\Users\ユーザー名\Desktop\Test\test</div>
<p>&nbsp;</p>
<h2>.exe化の実行</h2>
<p>.exe化をするにあたって、今回は&#8221;<span style="font-size: 18px"><strong>pyinstaller</strong></span>&#8220;といわれるツールを使います。</p>
<p>インストールがまだの方は、pipでインストールをしておきましょう。</p>
<p>&nbsp;</p>
<div class="sp-info">pip install pyinstaller</div>
<p>&nbsp;</p>
<p>これのまえに</p>
<div class="sp-info">pip install &#8211;upgrade pip</div>
<p>を実行しておきましょう。</p>
<p>&nbsp;</p>
<p>インストールができたら、使っていきます。</p>
<p>&nbsp;</p>
<div class="sp-info">pyinstaller  </div>
<p>でpyファイルをexe化することができます。</p>
<p>&nbsp;</p>
<p>オプションには、主に</p>
<ul>

<li>&#8211;onedir
1つのフォルダに出力結果をまとめます。</li>

<li>&#8211;onefile
1つのファイルに出力結果をまとめます→.exeファイルのみが生成されます。</li>

<li>&#8211;noconsole
コンソール画面の表示がされなくなります。</li>

<li>&#8211;clean
前回のキャッシュと出力フォルダを削除しビルドを行います。</li>
</ul>
<p>があります。</p>
<p>よく使うオプションになるので覚えておきましょう。</p>
<p>&nbsp;</p>
<p>オプション無しでpyinstallerを実行すると、</p>
<div class="sp-info">pyinstaller hello.world.py</div>
<p>&nbsp;</p>
<p>作業ディレクトリ内にアプリケーションファイル一式が作成されています。</p>
<p>(下図参照)</p>
<figure id="attachment_mmd_3494" class="wp-block-image aligncenter"><img decoding="async" width="982" height="327" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>作業ディレクトリ内にいくつかのフォルダやファイルが作成されています。</p>
<figure id="attachment_mmd_3495" class="wp-block-image aligncenter"><img decoding="async" width="680" height="495" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>distフォルダの中に.exeファイルが出力されています。</p>
<p>オプション指定がないので、.exeファイル以外にも</p>
<p>関連しているファイルが出力されています。</p>
<p>&nbsp;</p>
<p>.exeファイルのみが欲しいのに……というかたは、オプションに</p>
<p>&#8211;onefileを付けて、pyinstallerを実行すると、.exeのみが出力されます。</p>
<p>&nbsp;</p>
<div class="sp-info">pyinstaller hello.world.py &#8211;onefile</div>
<p>&nbsp;</p>
<p>出力されたフォルダの中を見てみると、</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_3503" class="wp-block-image aligncenter"><img decoding="async" width="979" height="321" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>作業ディレクトリ上に出力されるフォルダやファイルはオプション無しと同じです。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_3504" class="wp-block-image aligncenter"><img decoding="async" width="980" height="287" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>distフォルダの中を見てみると、.exeファイルのみが出力されます。</p>
<p>&nbsp;</p>
<p>オプション無しと比較してみると、</p>
<figure id="attachment_mmd_3506" class="wp-block-image aligncenter"><img decoding="async" width="268" height="72" src="https://dreamparadaisu.com/wp-content/uploads/2022/01/pyinstaller_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>上がオプション無し、下が&#8211;onefileオプション適用になります。</p>
<p><span style="font-size: 18px"><strong>サイズが違う</strong></span>のがわかります。</p>
<p>&nbsp;</p>
<p>&#8211;onefileにすると、.exeファイルのみの出力になりますが、</p>
<p>オプション無しで出力された様々なファイルがexeにまとめられる形になるため、</p>
<p>サイズが大きくなります。</p>
<p>&nbsp;</p>
<p>このサイズは、ライブラリをimportしている数によって比例します。</p>
<p>特に<span class="marker-under">pandasを使用したアプリケーションの場合、サイズがかなり大きくなります</span>。</p>
<p>&nbsp;</p>
<p>例えば、クラウドワークスでアプリケーションを納品したい場合、<span class="red-under"><strong>上限が100MB</strong></span>なので</p>
<p>場合によって100MB以下に収まらない場合があります。</p>
<p>&nbsp;</p>
<p>そのため注意が必要です。</p>
<p>※意識しないで作っていると、後で面食らうので気を付けましょう。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_3114" class="wp-block-image aligncenter"><img decoding="async" width="640" height="427" src="https://dreamparadaisu.com/wp-content/uploads/2021/10/4387900_s.jpg" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>また、Seleniumを使ったアプリケーションを.exe化した場合、</p>
<p>オプションに&#8211;noconsoleを使用すると起動がしないという事もあるので</p>
<p>留意しておきましょう。</p>
<p>&nbsp;</p>
<p>簡単に.exeファイルは作れますが、そこからエラーが起きたりと</p>
<p>悩まされることが多々出てくることもあるので身構えておきましょう。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3H39R8+BET46Q+2OM2+TVJ4X" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www25.a8.net/svt/bgt?aid=210104612690&amp;wid=001&amp;eno=01&amp;mid=s00000012521005018000&amp;mc=1" alt="" width="640" height="200" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www18.a8.net/0.gif?a8mat=3H39R8+BET46Q+2OM2+TVJ4X" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>pyファイルを.exe化する方法について簡単にざっくりと紹介していきました。</p>
<p>&nbsp;</p>
<p>.exe化することで誰かに配布できる形になりますが、ファイルサイズが大きくなってしまって</p>
<p>配布出来ないといったことも出てきます。</p>
<p>&nbsp;</p>
<p><span class="marker-under">(特にクラウドワークスなどのファイルサイズに上限があるサイトでの配布</span>)</p>
<p>→　納品の際はサイズも意識して作成してみてください。</p>
<p>&nbsp;</p>
<p>pandasライブラリをよく使われる方は、特にサイズが大きくなるので、</p>
<p>なるべくpandasを使わない方法もしくは今回紹介した方法とは別の方法で</p>
<p>.exe化することをおススメします。</p>
<p>&nbsp;</p>
<p>最後までお読みいただき、ありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にPythonの理解を深めました。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F12223744%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798130804 空飛ぶPython即時開発指南書"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0804/9784798130804.jpg?_ex=200x200" alt="空飛ぶPython即時開発指南書" /></div><p class="wpap-title">空飛ぶPython即時開発指南書</p><div class="wpap-creator">ナオミ・セダー, 新丈径</div><div class="wpap-price">3,080円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F13819463%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784797384406 確かな力が身につくPython「超」入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4406/9784797384406.jpg?_ex=200x200" alt="確かな力が身につくPython「超」入門" /></div><p class="wpap-title">確かな力が身につくPython「超」入門</p><div class="wpap-creator">鎌田正浩</div><div class="wpap-price">2,728円<span class="wpap-date">(04/19 11:14時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="3484"
					data-ulike-nonce="5eb73afc20"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_3484"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/python_37/">【Python勉強会】pyファイルをアプリケーション化～作成したコードをexe化する方法～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3484</post-id>	</item>
	</channel>
</rss>
