自作のPythonプログラムをパッケージに追加して使用する

お礼
私は、まだ一から作成することが出来ないので、皆様が作成したプログラムを流用して作成しています。ありがとう御座います。

#####環境
　　Ubuntu Studio 17.10
　　LibreOffice6.0

　　Ubuntu
　　Python 3.6.3(64bit)

　　LibreOffice 6.0
　　Python 3.5.4(64bit)

#パッケージの追加
郵便局のサイトから郵便番号のcsvデータをダウンロードして、
https://www.craneto.co.jp/archives/1309/
上記のサイトでcsvの読み込み方を勉強していたのですが、csvファイルがshift_jisでubuntuはutf-8なのでエンコードを指定しなくてはいけません。

上記のサイトに、文字コード判定のモジュールをimport getencと書いてあるのですが、インストールされていないので、pip3 install getencとしてもありません。

ネットで探していたら、
http://myfuturesightforpast.blogspot.jp/2015/01/auto-detecting-japanese-file-enconding.html
上記のサイトに、文字コードの自動判定関数getenc.pyがありました。

これを少し修正して、文字コードの自動判定パッケージgetenc.pyとして、'/home/ty/.local/lib/python3.6/site-packages'に保存しました。

https://qiita.com/ty21ky/items/3b944a7abe23e3bcaf8f
上記のブログでLibreOfficeのバンドルPythonにもパスを追加しているので、Ubuntuのpython3とLibreOfficeバンドルのPython3の両方で文字コードの自動判定パッケージを使用出来るようになりました。

```python:getenc.py
#!/usr/bin/python3
# (File name: getenc.py)
# Lincense: CC0
#http://myfuturesightforpast.blogspot.jp/2015/01/auto-detecting-japanese-file-enconding.html
#使い方
# $ ./getenc.py 27OSAKA.CSV
# $ ./getenc.py Text.txt
#使い方（呼び出す場合）
#from getenc import getEncode
#
#getEncode(ファイル名)

#文字コードの自動判定関数
def getEncode(filepath):
    encs = "iso-2022-jp euc-jp shift_jis utf-8".split()
    for enc in encs:
        with open(filepath, encoding=enc) as fr:
            try:
                fr = fr.read()
            except UnicodeDecodeError:
                continue
        return enc

if __name__ == '__main__':

    import sys

    argv = sys.argv
    argc = len(argv)
    hikisuu = 1

    if argc <= hikisuu:
        print ("文字エンコードを調べるテキストファイル名を１つを引数として指定します。")
        print ("使い方")
        print ("$ ./getenc.py テキストファイル.CSV(txt)")
    else:
        FR = argv[1]
        print(getEncode(FR))
```

これを呼び出すサンプルプログラム

```python:TestGetEncode.py
from getenc import getEncode

print(getEncode('/media/ty/HD-LCU3/Post/data/27OSAKA.CSV'))
```

```python:test
$ python3 TestGetEncode.py
shift_jis
$ /opt/libreoffice6.0/program/python ./TestGetEncode.py
shift_jis
```

割と簡単にパッケージを自作することができました。（まだ、プログラムを作ることが出来ないのは寂しいですが。）

https://www.craneto.co.jp/archives/1309/
Python3 で CSV の読み書きをする方法 – Shift_JIS と UTF-8 対応サンプルコード付

上記のサイトを参考にしてというか、ほとんどそのままですが郵便番号のCSVファイルを読み込むプログラムです。

```python:csv_open_getEncode.py
#Python3 標準モジュール csv のインポート
import csv

# getenc モジュールをインポート
from getenc import getEncode

try:
    CSVFILE = '/media/ty/HD-LCU3/Post/data/27OSAKA.CSV'
    # 文字コードが不明な場合
    enc = getEncode(CSVFILE)
    with open(CSVFILE, 'r', encoding=enc) as csvfile:
        csv_reader = csv.reader(csvfile, delimiter=',', quotechar='"')
        for row in csv_reader:
            print(','.join(row))
 
# 起こりそうな例外をキャッチ
except FileNotFoundError as e:
    print(e)
except csv.Error as e:
    print(e)
```

```python:test
$ python3 csv_open_getEncode.py
........
27383,585  ,5850053,ｵｵｻｶﾌ,ﾐﾅﾐｶﾜﾁｸﾞﾝﾁﾊﾔｱｶｻｶﾑﾗ,ｺﾌﾞｷ,大阪府,南河内郡千早赤阪村,小吹,0,0,0,0,0,0
27383,585  ,5850041,ｵｵｻｶﾌ,ﾐﾅﾐｶﾜﾁｸﾞﾝﾁﾊﾔｱｶｻｶﾑﾗ,ｽｲﾌﾞﾝ,大阪府,南河内郡千早赤阪村,水分,0,0,0,0,0,0
27383,585  ,5850051,ｵｵｻｶﾌ,ﾐﾅﾐｶﾜﾁｸﾞﾝﾁﾊﾔｱｶｻｶﾑﾗ,ﾁﾊﾔ,大阪府,南河内郡千早赤阪村,千早,0,0,0,0,0,0
27383,585  ,5850052,ｵｵｻｶﾌ,ﾐﾅﾐｶﾜﾁｸﾞﾝﾁﾊﾔｱｶｻｶﾑﾗ,ﾅｶﾂﾊﾗ,大阪府,南河内郡千早赤阪村,中津原,0,0,0,0,0,0
27383,585  ,5850042,ｵｵｻｶﾌ,ﾐﾅﾐｶﾜﾁｸﾞﾝﾁﾊﾔｱｶｻｶﾑﾗ,ﾆｶﾞﾗﾍﾞ,大阪府,南河内郡千早赤阪村,二河原辺,0,0,0,0,0,0
27383,585  ,5850044,ｵｵｻｶﾌ,ﾐﾅﾐｶﾜﾁｸﾞﾝﾁﾊﾔｱｶｻｶﾑﾗ,ﾓﾘﾔ,大阪府,南河内郡千早赤阪村,森屋,0,0,0,0,0,0
27383,585  ,5850054,ｵｵｻｶﾌ,ﾐﾅﾐｶﾜﾁｸﾞﾝﾁﾊﾔｱｶｻｶﾑﾗ,ﾖﾄﾞｼ,大阪府,南河内郡千早赤阪村,吉年,0,0,0,0,0,0
```


#####その他の参考にしたサイト
Pythonで自作モジュールを手軽に使う
https://qiita.com/Accent/items/efb57d66309f6c0ee63d