(license)みなさん、こんにちは!タカハシ(@ntakahashi0505)です。プログラミング初心者&Windowsユーザー向けにPythonでZIP圧縮するツールの作り方をお伝えしています。初心者向け&Windowsユーザー向けPythonでZIP圧縮をするツールの作り方をお伝えしています。今回はPythonでフォルダ内のツリー構造を走査してサブフォルダとファイルを全てリストアップする方法です。tonari-it.com2017.09.09Pythonでフォルダ配下のツリーを渡り歩くos.walk関数の使い方についてお伝えしました。今回ですが、そのos.walk関数を使うことで、フォルダ配下のツリー上にあるすべてのサブフォルダとファイルについてZIPファイルに追加して圧縮することができます。いうことで、Pythonで指定のフォルダ配下をまとめてZIP圧縮するツールの作り方です。複数のフォルダとファイルをZIP圧縮する単体のZIP圧縮についておさらい複数のフォルダとファイルを直接追加するスクリプトフォルダ配下の全てのフォルダ・ファイルをZIPファイルに追加os.walk関数のおさらいos.walk関数を使ったフォルダの圧縮os.path.join関数を使ってパスを結合するまとめ連載目次:初心者向け!PythonでファイルをZIP圧縮するツールを作る複数のフォルダとファイルをZIP圧縮する単体のZIP圧縮についておさらいまず、ZIP圧縮についておさらいですが、前々回作ったスクリプトが参考になります。myzip:myzip.write('test.csv')ZipFile関数を使って、test.zipというZIPファイルを作成して、そこにwriteメソッドを使ってtest.csvという単体のファイルを追加するという内容です。前々回の記事もご参考下さい。初心者でも簡単!PythonでファイルをZIP形式に圧縮する基本のプログラムプログラミング初心者かつWindowsユーザー向けに、Pythonでいろんな便利ツールを作る方法をお伝えしています。今回はPythonでファイルをZIP形式に圧縮するプログラムの作り方をお伝えします。tonari-it.com2017.09.08複数のフォルダとファイルを直接追加するスクリプト単体ではなくて複数、そしてファイルだけでなく、フォルダも追加したい場合は以下のようなスクリプトを作ればOKです。myzip:myzip.write('test')myzip.write('test\\test1')myzip.write('test\\test1\\test1.csv')myzip.write('test\\test2')myzip.write('test\\test2\\test2-1.csv')myzip.write('test\\test2\\test2-2.csv')myzip.write('test\\test.csv')実行するとZIPファイルが生成され、中身をのぞくと以下のようになります。writeメソッドでフォルダやファイルを追加していき、ZIPファイルがクローズした(with文のブロックを抜けた)時点で、追加されたフォルダ・ファイルを含んだ形でZIPファイルが生成されます。全部のサブフォルダとファイルを直接指定するわけにはいきませんよね。フォルダ配下の全てのフォルダ・ファイルをZIPファイルに追加os.walk関数のおさらいということで、前回ご紹介したos.walk関数が活躍します。前回のスクリプトを復習してみましょう。{}'.format(files))print()os.walk関数は指定したフォルダをルートとして、配下のツリーに含まれるすべてのフォルダについて、以下のタプルを生成します。files)folderはフォルダ、subfoldersはそのフォルダに含まれるサブフォルダのリスト、filesはそのフォルダに含まれるファイルのリストです。os.walk関数を使ったフォルダの圧縮つまり、os.walk関数で生成したタプルについてfolderfilesに含まれるファイルをZIPファイルに追加すれば、ルートフォルダ配下の全てのフォルダとファイルについてZIPファイルに追加できるということです。それを踏まえて、以下スクリプトを作成してみました。files:myzip.write(file)しかし、このスクリプトでは以下のようなエラーが出てしまいます。指定されたファイルが見つかりません。‘test.csv’なぜエラーが出てしまうかというと、リストfilesの要素はファイル名しか持たずに、フォルダパスの情報を持っていないんですね。該当のファイルは作業フォルダの中には存在しませんので、「ファイルが見つかりません。」となってしまうわけです。「test\test2」と、作業フォルダからのパスも含めて指定をしてあげる必要があります。os.path.join関数を使ってパスを結合する作業フォルダからのパスは、folderがその情報を持っていますので、folderとfileを連結すればこの問題は解決します。file)とすればOK!...というわけではあるのですが、せっかくなのでパスの結合にはos.path.join関数を使いましょうか。os.path.join関数ならWindowsでもMacでも環境の違いを気にせずに、賢くパスを結合してくれるのです。パス2,...)これで、指定したパスを全て環境に合わせたファイルセパレータを用いて連結してパスを生成します。いうことで、完成したスクリプトはこちらです。files:myzip.write(os.path.join(folder,file))まとめ以上、Pythonで指定のフォルダ配下をフォルダ、ファイル含めて全てZIP圧縮する方法をお伝えしました。定期的にZIP圧縮するフォルダがあれば、仕込んでおかない手はないですよね。次回ですが、ZIPファイル名に「年月日」を付与する方法をお伝えします。Pythonで現在の日時を取得して指定のフォーマットの文字列に変換するプログラミング初心者&Windowsユーザー向けにPythonでフォルダ圧縮ツールを作る方法をお伝えしています。今回はPythonで現在の日時を取得して文字列に変換する方法についてお伝えします。tonari-it.com2017.09.11どうぞお楽しみに!連載目次:初心者向け!PythonでファイルをZIP圧縮するツールを作る複数ファイルをまとめてZIPに圧縮すると、メール添付やバックアップなどに便利です。定期的にZIP圧縮をする必要があるのであれば、Pythonに任せてしまいましょう!ツールの作り方をシリーズでお伝えしていきます。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。関連記事Python【初心者向け】IDLEを使ってPythonプログラムを作成して実行する一連の流れ非エンジニア一般ビジネスマン向け、はじめてのPythonプログラミングについてお伝えしています。今回は、IDLEのテキストエディタでPythonプログラムを作成して実行する一連の流れをお伝えします。非エンジニアのWindowsユーザーがPythonを学び実務で使うことを目標にいくつかの記事を書いてきました。ワンランク上の環境を...ということで、Anacondaの紹介とインストールについて解説します。一般ビジネスマンの初心者向けフォルダを操作するツールを作りながらPythonの基本を学ぶシリーズ。今回は、Pythonプログラミングの基本、forループとrange関数による繰り返し処理の作り方です。2017.08.17PythonPythonでリストのforループでインデックスと要素の両方を取り出して繰り返す方法Pythonで初心者でも簡単にできるクリックボードを使ったツールの作り方をお伝えしています。今回はPythonのリストのforループで要素とともにインデックス番号も取り出す方法についてお伝えします。2017.08.29PythonPythonでcsvファイルのデータを辞書データとして集計する簡単なプログラム初心者&Windowsユーザー向け、Pythonで辞書を使った集計ツールの作り方をお伝えしています。今回はPythonでcsvファイルのデータを辞書として集計する方法です。next関数も使いますよ。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった2020.02.072020.02.08GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法2020.02.052020.02.05Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。