LoginSignup
15

More than 5 years have passed since last update.

Pythonで日次作業の効率化を図ってみた

Last updated at Posted at 2016-09-29

効率化というほど効率よくなっているかは微妙ですが、仕事の合間にやってみました。

概要

ファイルサーバからローカルにいくつかのファイルをコピーしてきます。ついでにディレクトリも作成します。

背景

その日のタスク一覧を印刷して担当者に配るというとても新人らしい日次作業を割り当てられています。ローカルにディレクトリを作成して、ファイルサーバからそこにファイルをコピーするという準備が必要です。ちょろっとコードを書けばワンクリックで準備が終わるようになりそうだと思い、やってみました。

本論

ローカルにyyyymmddという規則でその日分のファイルを入れるディレクトリを作ります。その後にファイルサーバからタスク一覧ファイルをコピーしてきます。

まずスクリプト実行時の時刻を取得し、それを基に年月日を文字列として得ます。
os.mkdir(path)でディレクトリを作成。これで第一段階は終了。
次に、ファイルサーバのタスク一覧があるディレクトリのファイル一覧をos.listdir(path)で取得します。
コピー対象のファイル名は先頭に共通した文字列【hoge】を持っているので、str.startswith(prefix)で該当するファイルを探すことができます。
ファイル一覧はリストなので、ループで一つずつ回しながらファイルを探し、見つけ次第shutil.copy(src,dst)でファイルサーバから作成したディレクトリへコピーします。

これにて日次作業の準備は完了です。後はちまちまと印刷したりするだけです。

#encode:utf-8

import os
import shutil
from datetime import datetime

if __name__ == "__main__":

    #現在時刻を取得
    today = datetime.now().strftime('%Y/%m/%d %H:%M:%S')
    y = datetime.now().strftime('%Y')    
    m = datetime.now().strftime('%m')
    d = datetime.now().strftime('%d')

    #フォルダ名(yyyymmdd)
    dirname = y + m + d
    #フォルダ作成
    os.mkdir(dirname)

    #コピーしたいファイルがあるディレクトリ.
    copydir = 'B:/foo/bar/baz/'
    #ディレクトリに置かれたファイルの一覧を取得
    files = os.listdir(copydir)

    for n in range(len(files)):
        #共通した文字列を持つファイルをyyyymmddフォルダにコピー
        if files[n].startswith('【hoge】'):
            print(files[n])
            shutil.copy(copydir + files[n] , './' + dirname + '/' + files[n])

[2016.10.01追記]

【修正】
明らかに間違っている箇所なのでencode:utf-8encoding:utf-8に修正しました。コメントでの指摘、ありがとうございました。

【悲報】
フェーズが進んだため日次作業は終了と言われました。
せっかく書いたコードですが、しばらく出番はなさそうです('ω')
とはいえ機能が単純なので他への応用もできるかもしれません。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15