見出し画像

Pythonはじめました

 Pythonの勉強を昨日から始めました。勉強というより、Googleで検索しながら、実際にプログラムを組んでみるということをし始めています。
 本来であれば、構文などを勉強してからのほうが効率が良いのでしょうが、今更、「Hello, World!」を出力するプログラムを書く気にはなれないので現状、必要なプログラムを書くという方法をとりました。

余談ですが、小学6年からプログラムを書いているので、プログラマ歴40年近くになっています。

 小学6年の時に友達に連れられ、近所にあったマイコンショップと呼ばれる場所に行ったことで、パソコン(その当時はマイコン)の世界に浸かることになりました。

 一番最初に覚えた言語は、ザイログ社のZ80という8ビットCPUの機械語です。00〜FFまでをノートに書き出し、どのような命令なのかを調べて書き出し勉強しました。そこからは機械語を使えばなんでもできると思ったものです。その当時、少ない小遣いで雑誌を購入し、色々と勉強したものです。I/Oという雑誌に著作権無視したドンキーコングのコードが掲載されたときは非常に驚きました。
 次に、ハドソンのHu-Basic上で動くBASIC言語です。その次は、NECのN88 BASICだったでしょうか。

 COBOL、FORTRANは、専門学校時代に学習はしたものの実践で生かす場面は訪れることはありませんでした。唯一、専門学校時代に習ったものではC言語が社会人になってから実践で使える言語でした。

 そうこうしている内に、Windowsが発売となり、Visual Basic、Delphiなどを覚えたのですが、仕事では、かなりマイナーな言語であるPL/SQLという言語を使って色々と仕事をこなしていました。

やっと、Pythonです。

 ここ最近、コンピュータで少しやりたいことが出てきたため(RPAとWebスクレイピングなど)、色々と調べてみるとどうやらPythonが適しているようだという話があり、やっと重い腰を上げて取り組んでみようということになりました。
 数年前からその言語の存在は知っていたのですが、新しい言語を勉強するのも面倒だということもあり、勉強しておりませんでした。

 数日前に環境構築の方法を調査し始めて、やっと昨日の午後から、簡単なプログラムを書いて実行することができました。
 とりあえずは、今一番必要なプログラムで、ファイルの整理とコピーを行うプログラムを作ってみました。

画像1

 コピー元のフォルダに格納されているファイルを、コピー先のフォルダに整理するというごくごく簡単なものです。フォルダがなければ、コピー先にそのままコピーするというものです。
 作成したコードは以下の通りです。
 ※2021/5/18追記:最初のコードから一部変更しました。プラットフォームを意識した内容に変更しています。

import sys
import os
import platform
import shutil

def main(folder_from, folder_to):

   if platform.system() == 'Windows':
       slashsymbol = "\\"
   else:
       slashsymbol = "/"

   for name in os.listdir(folder_from):
       if os.path.isfile(folder_from + slashsymbol + name):
           name_ext = os.path.splitext(name)
           if name_ext[1].lower() == ".xlsx":
               if len(name_ext[0]) > 11 \
               and os.path.isdir(folder_to + slashsymbol + name_ext[0][:len(name_ext[0])-11:]) \
               and name_ext[0][len(name_ext[0])-10:len(name_ext[0])-6:].isdigit() \
               and name_ext[0][len(name_ext[0])-5:len(name_ext[0])-3:].isdigit() \
               and name_ext[0][len(name_ext[0])-2:len(name_ext[0]):].isdigit():
                   new_folder = slashsymbol + name_ext[0][:len(name_ext[0])-11:]
                   new_name = name_ext[0][len(name_ext[0])-10:len(name_ext[0]):] + name_ext[1]
               else:
                   new_folder = ""
                   new_name = name_ext[0] + name_ext[1]

               shutil.copyfile(folder_from + slashsymbol + name, folder_to + new_folder + slashsymbol + new_name)
               shutil.copystat(folder_from + slashsymbol + name, folder_to + new_folder + slashsymbol + new_name)
               if os.path.exists(folder_to + new_folder + slashsymbol + new_name):
                   os.remove(folder_from + slashsymbol + name)
                   print("move: ", folder_from + slashsymbol + name, " => ", folder_to + new_folder + slashsymbol + new_name)

if __name__ == '__main__':

   if len(sys.argv) == 3:
       print("From: ", sys.argv[1])
       print("To  : ", sys.argv[2])
       if os.path.isdir(sys.argv[1]) and os.path.isdir(sys.argv[2]):
           main(sys.argv[1], sys.argv[2])
       else:
           print("フォルダが存在しません。")
   else:
       print("引数が正しく指定されていません。")

 実行時にコピー元のフォルダ名とコピー先のフォルダ名の2つのパラメータを受け取り、自動的に処理をするというものです。
 Pythonのコードを昨日初めて書いたので、ベテランのPythonプログラマの方からすると大変下手なプログラムですが、やりたいことは基本的にできたので、それなりに満足しています。

 昨日、一通りプログラムを書いてみて思ったのは、非常に簡単な言語体系であるということです。
 インデントでブロックの区別をすると聞いていたので、for文やif文のコロンの存在はどう考えれば良いのかなど、まだ言語として納得できていない部分はあるものの、これぐらい簡単な言語体系であれば、確かに高校生でも数時間でプログラムを書き始めるということができるだろうと思いました。

 最終目標は、Webサイトから情報を収集して、Excelなどにデータを書き込みデータを分析するというところまでできればと考えていますが、そこまで上達するにはどれぐらいプログラムコードを書けばいいのかが、まだわかっておりません。

 次は、簡単なWebアプリケーションを作ってみる予定です。また、面白いものが出来れば、情報を公開したいと考えています。

この記事が気に入ったらサポートをしてみませんか?