2015年11月10日火曜日

Windowsダイアログを使って編集するファイルを指定する方法2 | Python

テキストファイルの指定行頭に"$"を追記し、指定外の行はオリジナルのまま別ファイルに書き出すことを考えます。"$"をつけた行は読み込まれなくなるものとして、関数名はcommnetOutとしています。

---以下スクリプト---

import win32ui
import os.path

# Windowsダイアログを作ります
o = win32ui.CreateFileDialog( 1, ".inc", "", 0, "Text Files (*.inc)|*.inc|All Files (*.*)|*.*|")
o.DoModal()

# ダイアログで指定したファイルのパスを取得して変数inFileに割り当てます
inFile = o.GetPathName()

def commentOut():

    try:
        # ファイルの保存先とファイル名を指定するダイアログを作ります
        o = win32ui.CreateFileDialog( 1, ".inc", "", 0, "Text Files (*.inc)|*.inc|All Files (*.*)|*.*|")
        o.DoModal()
        # ファイル保存先のパスを取得して変数outFileに割り当てます
        outFile = o.GetPathName()

        fin = open(inFile,"r")
        line_list = fin.readlines()

        fout = open(outFile,"w")

        #コメントアウトしたいスタート行番号を指定します
        start_line = 646189
         #コメントアウトしたい最終行番号を指定します
        end_line = 652848

        #読み込んだテキストファイル全行が入ったリストの最初から最後まで繰り返します
        for index,line in enumerate(line_list):
            if start_line-2 < index < end_line:
                fout.write("$" + line)
            else:
                fout.write(line)

        fout.close()
        fin.close()

    except:
        pass

    finally:
        pass

if __name__ == "__main__":
    commentOut()

---以上スクリプト---

以前の投稿で書いたWindowsダイアログの作り方とは別の書き方となっていますが、操作結果は同じようなものになります。

2015年11月6日金曜日

Windowsダイアログを使って編集するファイルを指定する方法1 | Python

Excelファイルでのデータ処理をPythonで記述したスクリプトを使って行う場合を想定します。

---
import win32com.client

xlApp = win32com.client.Dispatch("Excel.Application")
xlApp.Visible = 1

xlApp.Workbooks.open(r"C:\training\test.xlsx")
xlSheet = xlApp.Workbooks(1).Sheets(1)

xlCell = xlSheet.Cells(2,1)
xlCell.Value = "aaa"
---

これを実行すると新規にExcelが起動し、セルA2にaaaが入力されます。

次に、Windowsのダイアログから開きたいファイルを指定する方法です。

---
import win32com.client
import win32ui #ダイアログを開くために追記します

o = win32ui.CreateFileDialog( 1, ".txt", "default.txt", 0, "Text Files (*.txt)|*.txt|All Files (*.*)|*.*|")
o.DoModal() #( )内はダイアログ上の表示を規定しています

xlApp = win32com.client.Dispatch("Excel.Application")
xlApp.Visible = 1

xlFile = o.GetPathName() #ダイアログで指定したファイルのパスを変数xlFileに入れています

xlApp.Workbooks.open(xlFile)
xlSheet = xlApp.Workbooks(1).Sheets(1)

# A2セルにaaaと書き込む
xlCell = xlSheet.Cells(2,1)
xlCell.Value = "aaa"
---

これでダイアログから開きたいファイルを指定することができます。

ファイル名は隠しています


しかし、問題もあります。
それは、ダイアログでキャンセルボタンが押された時の処理が書かれていないことです。
これについての対応方法は別の投稿で書きたいと思います。

SyntaxHighlighter