2018年5月3日 星期四

Python - Simple Example & Common Function

Python - Simple Example & Common Function

一、How to concate file path - os.path.join

import os.path

print( os.path.join(os.path.sep, "D:",  "TEMP", "a.txt") )
#result => \D:TEMP\a.txt    #一般不該把根目錄放在 JOIN,會造成分隔字元在最前面

mypath = os.path.join(os.path.sep, 'TEMP', 'a.txt')
#字頭有 os.path.sep 與沒有會影響決對路徑的位置
#目前有 \ 所以會捉到目前 Python 所在磁碟的根目錄 + \TEMP\a.txt
print(os.path.abspath(mypath))
#result => D:\TEMP\a.txt

mypath = ''.join(["C:", mypath])
print(mypath)
#result => C:\TEMP\a.txt

os.path.sep : 目前 os 預設的磁碟分隔符 (Windows : "\", Lundix,Unix : "/")
os.path.abspath : 回傳決對路徑,當傳入的是 os.path.abspath("\TEMP") => 目前程式的錄徑磁碟 + \TEMP => D:\TEMP,但如果是 os.path.abspath("TEMP") => 目前 Python 程式的位置 + \TEMP




二、Create a file and insert string to file

f = open("D:\data2.txt", "w") #W : open file for read/write
f.write( "TEST" )
f.close()


三、Get Current Work Folder - os.getcwd()

目前檔案放在 D:\TEMP 目錄下,並寫入下面的 Code

import os

path = os.getcwd()
print(path)

#RESULT : D:\TEMP


四、Convert BASE64biary To JPG File (Python 2.7 only)

img_data = b'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'

# In Python 2.7
fh = open("d:\imageToSave.png", "wb")  #wb : open file for read/write by binary mode 
fh.write(img_data.decode('base64'))
fh.close()


# In Python 3.X
import base64

imgdata = base64.b64decode(img_data)
filename = 'c:/temp/test.png'
with open(filename, 'wb') as f:
    f.write(imgdata)


五、How to use REGULAR EXPRESSION in python

如何使用 regular expression 捉取字串中的數字,並依捉取的順序群組的方式取得

import re

#reObj = re.compile(r'(\d\d).*(\d\d)')
reObj = re.compile(r'([0-9]+).* ([0-9]+)')
mo = reObj.search('my age 13 and weight 65')
print(mo.group(1))
print(mo.group(2))
print(mo.group())
print(mo.groups())
print(len(mo.groups()))
print(mo.span())         #取得目前符合字串的 index
mo1, mo2 = mo.groups()   #使用兩個變數直接取回 mo 的 groups 內的值
print(mo1)
print(mo2)

>>> 13
>>> 65
>>> 13 and weight 65
>>> ('13', '65')
>>> 2
>>> (7, 23)
>>> 13
>>> 65

上面的做法是截取字串回來,另一種作法是取得符合條件的座標

import re

pattern = "[0-9]+.*[0-9]+"
string = 'my age 13 and weight 65'
result = re.search(pattern,string).span()
print(result)   #取得座標 (加 span 才會轉換成座標)
result = re.compile(pattern).findall(string)
print(result)   #截取回字串

>>> (7, 23)
>>> ['13 and weight 65']


六、How to use python open/write file

下面的例子主要是透過 Open 的方式,產生 Input 與 Output 的檔案,

import os

openFile = open("d:\\input.txt", "r")
writeFile = open("d:\\output.txt", "w")

txtLine = openFile.readlines()
for text in txtLine:
    #text = text.replace("\n", "") #取代掉換行符號
    print(text)
    writeFile.write(text)

writeFile.close()
openFile.close()


七、How to install package in Visual Studio C#

在 Visual Studio 中,選擇 Python Environments,按下右鍵會有 Install Python Package,安裝後即可在該 Python 2.7 目錄下看到安裝的套件,如果要指定版本,就下 openpyxl==2.1.4 即可

八、Python 安裝 pip tools

在網站 http://pypi.org/project/ 找尋 pip,進入 https://pip.pypa.io/en/stable/installing/ 下載 get-pip.py 進行安裝,並且使用 python get-pip.py 進行安裝

安裝後接下來可以進行以下命領進行要安裝的套件 python -m pip install openpyxl==2.1.4

可透過 python 確認套件正常安裝
D:\>python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information.
>>> import openpyxl

>>> python -c "import openpyxl"

反安裝 : python -m pip uninstall openpyxl

更新 pip : python -m pip install --upgrade pip

九、Python import 自訂 py 檔案內的 function

1. pinrt_func.py

def print_name(a):
  print(a)

2. main_program.py

from print_data import print_name
print_name('abc')
or

import print_data
print_data.print_name('abc')

透過上面的寫法,from <python file> import <function name or * (不建議)> 即可把匯入自己撰寫的 py 檔內 def 供其他程式使用


十、Python not found module 時,如可得知系統 lib 載入的位置以及增加 lib 位置

1) PYTHONPATH : 將要匯入的 py 檔所在的路徑加入環境變數
2) sys.path.append("模組化文件目錄")

import sys
print(sys.path)

如果出現的結果沒有你 py 檔指定的目錄,則可以透過下面方式加入

import sys
sys.path.append("d:\my_python_lib")

3) PYTHON 安裝目錄/lib : 將檔案直接放到 python 安裝目錄的 lib 下

沒有留言:

張貼留言

How to install & specified python version or distreibtuion package version in google colab

在買了 RTX 3080 要來 挖礦...  嗯~是跑機器學習後,結果發現了 GOOGLE COLAB,其實之前在「GAN 對抗式生成網路」一書就有看到,但資訊人就是什麼都想自己安裝,在本機用 Anaconda + pyCharm 弄了 GPU 環境,結果有天從新竹回家發現家裡沒...