Configファイル初期作業スクリプト

今回のConfigファイル変換スクリプトは

  1. ファイルを.bakの拡張子つきで同じディレクトリにバックアップをとる。
  2. #で始まる行を消す。

を実現するためのものです。


ApacheやSambaをインストールしてコンフィグファイルを編集する前に
コメント行全部削除したい、という衝動に毎回かられます。


以前はオリジナルのバックアップをとってbashでコメント行を消して、
とやっていたんですが、bashをどう書いていたか思い出せず‥・
勉強がてら、Pythonで書いてみました。

#/usr/bin/env python
# -*- coding:utf-8 -*-


import os
import shutil


def get_fpath_fname():
  chpath = False
  chfile = False
  while not chpath:
    fpath = raw_input("Enter a directory path\n> ")
    if os.path.isdir(fpath):
     chpath = True
    else:
      print fpath + " does not exist"

  while not chfile:
    fname = raw_input("Enter a file name\n> ")
    os.chdir(fpath)
    if os.path.isfile(fname):
      chfile = True
    else:
      print fname + " does not exit"
  return fpath,fname


def mkbackup(fpath, fname, fext = ".bak"):
  sname = os.path.join(fpath, fname)
  dname = sname + fext
  shutil.copyfile(sname, dname)


def rmcomments(fpath, fname):
  tname = "wtemp.tmp"
  os.chdir(fpath)
  sfile = open(fname, 'r')

  for line in sfile:
    if line.startswith('#'):
      continue
    else:
      dfile = open(tname, 'a')
      dfile.write(line)
  sfile.close()
  dfile.close()
  os.remove(fname)
  os.rename(tname, fname)


def main():
  fpath, fname = get_fpath_fname()
  mkbackup(fpath, fname)
  rmcomments(fpath, fname)


if __name__ == '__main__':
  main()