0%

今天我想分享關於目錄和檔案相關範例,如重新立名,出檔案,我會用很多方式呈現出來。

List current directory 目錄利出檔案

list your file in current directory 目錄列出檔案

我們常在 linux 和 window 都會用 ‵ls‵ 或 ‵dir‵ 來列出我們目錄底下所有檔案。 可以用 os.listdir() 就可以利出所有目錄和檔案

目前目錄下: os.listdir()

指定位置: os.listdir(path)

1
2
3
import os
for file in os.listdir():
print(file)

output:

1
2
3
4
5
6
7
8
counter.py
elogfile
elogfile.txt
elogfile2
elogfile2.txt
list_file.py
logchecking.py
logchecking_rename.py

filter specific file or file type 篩選檔名

有幾個方式可以用,如果要指定檔案類型 我們可以用: startswith()endswith().

Read more »

This exercise is to show you how to count your string occurrences, or how many duplicated value. 我想分享如何找估重複文字次數。

iterate through list, and store in dictionary

[方法一] 基本 loop 把它存在 dictionary

output: {'James': 1, 'Kelly': 2, 'Sammie': 1

1
2
3
4
5
6
7
8
9
10
listofName=['James','Kelly', 'Sammie', 'Kelly']
dictcollect={}
for name in listofName:
if name in dictcollect:
dictcollect[name]+=1

else:
dictcollect[name]=1
print(dictcollect)

其實可以寫成更簡短方式,其實跟上面方式一樣

1
2
3
4
5
listofName=['James','Kelly', 'Sammie', 'Kelly']
dictcollect={}
for name in listofName:
dictcollect[name]=dictcollect.get(name,0)+1
print(dictcollect)

如果沒出現就離開,出現就會+1,也可以這樣做 1+dictcollect.get(name,0)

dictcollect.get(name, 0) checks if the name already exists as a key in the dictionary.
If it exists, the current count is retrieved.
If it doesn’t exist, 0 is returned.

[方法二] collection 裡面的 count

Read more »

Understanding Function Annotations ->:

Today I would like to share when we see an arrow or colon on function, basically there’s a term Function Annotation. I see some turtorial and see many developer beeen using it, and went and research on it.

You can think it’s just a comment, nothing else. It to tell people about your code expectation, like data type or return value. So let me show you some examples, and you will see the arrow or colon doesn’t mean anything, it just to tell people what this variable mean.

1
2
3
4
5
6
def velocity(s: 'in miles', t: 'in hours') ->'mph':
return s/t

velocity(4,5) # 0.8

print(velocity.__annotations__)

output:

{'s': 'in miles', 't': 'in hours', 'return': 'mph'}

from above example it just to tell user s is in mile, t is in hours, and return mph

You will see many people use like this to define datatype:

1
2
3
4
5
def calculate(a: int, b: int)-> int:
return a+b
result= calculate(4,5)
print(calculate.__annotations__)
# {'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}

overall it just to tell people what the code expectation is or are.

Read more »

今天來分享如何應用 virtual env 來提高工作環境等效率。如果使用 python library 我想信很多時候都會用 pip 來安裝他的 library 等 module。如果某些套件版本跟你專安不 match 造成無法 code 無法運行怎麼呢?這時你只有降版本,也就是可能要先移除再安特殊版本。另一種方式就是建立一個 virtual env 也就是類似虛擬環境,這裡可以安裝任何 package or library 跟主環境分離不會有相關。

我覺得這個很好用,如果你原本主環境安裝太多 library 你有時還要 debug,你可以一開就建立在乾淨環境,再安裝你要安裝個 library or module 等 package。

可以用這兩終方式建立 virtualenv,如:

  • virtualenv : 需要安裝套件
  • venv:內建就有無須安裝特建

venv

Syntax: python -m venv <my_env_name>
EX: python -m venv venv

  • 如何用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#create new directory
mkdir newproject
cd newproject

#create virtual env
py -m venv env_apitest

#activate

.\.env_apitest\Scripts\activate #for window
source .env_apitest\Scripts\activate #for linux or mac

#deactivate
deactivate

# upgrade python version
python -m venv /path/to/venv --upgrade

virtualenv

Read more »

今天想要來分享如何在 window 上面設定像 Linux 或 Mac 相關花麗等冬端機 terminal,和以些 linux 不錯的指令。如果你們有用過 Linux,在用 window 很不習慣,尤其是指令。今天想分享如何用 Oh-my-posh 在 window 上面可以跟 Linux 的 Oh-my-zsh 有依樣效果。Window 是用在 powershell 上,他有支援很多 shell bash zsh powershell fish等等。我有寫一篇比較完整,在Medium 因此今天會寫簡短方法。

安裝工具

軟體安裝服務比較

如果你有用過 Ubuntu 都會看到大家常用 apt-get install 這命令,這個就是我稱為的安裝服務工具。他可以很快速幫助你要安裝個套件。我今天要介紹 3 個,但我會以 winget 優先用,如果 winget 沒有套件再選其他兩個。winget 是微軟開發因此我才會優先用他。我會盡可能不去商店下載。

正常來說 winget 預設鏡安裝了,如果你是 win10 都會安裝,如果指令找不到就用下方的方法。如果 winget有,那把 scoop安裝,Chocolatey就看你要挨裝嗎,我目前沒用到。

  • Winget
    先到這裡下載 ,檔案會是 Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle然後用這個指令安裝:
1
2
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Add -AppPackage
1
2
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
Read more »

今天有想在這裡分享 Regular Expression,這也是大家不想碰到的,可就是一個很復雜的就越耗用。
我也沒有很勵害,但之前開發自動化,用很多。因此想藉由這編文章來寫下我所寫道的筆記和參考很多教學。

在介紹之前我們在 python 都會用到 re 或是 rex ,但在這我只會分享用 re,也就是要 import re,不然不能用。

常用的 req module

Module 說明
match Determine if the RE matches at the beginning of the string.
search Scan through a string, looking for any location where this RE matches
findall Find all substrings where the RE matches, and returns them as a list.
finditer Find all substrings where the RE matches, and returns them as an iterator.

compile()

1
2
3
4
5
6
import re
text ='https://chenchih.page , Author is ChenChih'
pattern=re.compile('Chenchih',re.I)
print(pattern.match(text)) #None
print(pattern.search(text).group()) #chenchih
print(pattern.findall(text)) #['chenchih', 'ChenChih']

output:

None
cheenchih > > ['chenchih', 'ChenChih']

match()

This function matches a regular expression pattern at the beginning of a string. If the pattern is found, it returns a match object, otherwise, it returns None.

1
2
3
4
5
import re
teststring="123abc456789abc123ABC"
pattern=re.compile(r"abc")
match=pattern.match(teststring)
print(match)
Read more »

我想分享一些基本的DB(MYSQL)語法。之前面試有考不管是在Amazon,或Microsoft 都有考過我DB。我那時有準備筆記,但後來就不知跑哪。今天想在這篇寫關於SQL基本指令,有機會再寫高階的語法。

我住前是用MYSQL的DB軟體,你們可以選用其他的如MogoDB, Microsoft SQL server,orlacle DB等等。基本上語法都差不多,我猜的

  • Table: employee:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    +----+-------+--------+--------------+
    | id | Name | Salary | DepartmentID |
    +----+-------+--------+--------------+
    | 1 | Joe | 85000 | 1 |
    | 2 | Henry | 80000 | 2 |
    | 3 | Sam | 60000 | 1 |
    | 4 | Max | 90000 | 1 |
    | 5 | Janet | 69000 | 1 |
    | 6 | Randy | 85000 | 1 |
    +----+-------+--------+--------------+

SELECT & FROM

select * from

select 可以選擇要印那一欄,如果加*可以把所有內如印出來,以下是指令:

select * from employee;

1
2
3
4
5
6
7
8
9
10
11
Table: employee;
+----+-------+--------+--------------+
| id | Name | Salary | DepartmentID |
+----+-------+--------+--------------+
| 1 | Joe | 85000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 1 |
| 4 | Max | 90000 | 1 |
| 5 | Janet | 69000 | 1 |
| 6 | Randy | 85000 | 1 |
+----+-------+--------+--------------+

select Name 指定欄位

SELECT Name, Salary From Employee;

Read more »

An unorder collection of a unquie object. No duplicate value.
不可以有重複的直,一般都是用在帳號上面。

Create set

1
2
my_set= {1,2,3,4,5}
print(my_set)

output:

{1, 2, 3, 4, 5}

如果加重複會用最前面的

1
2
my_set= {1,2,3,4,5,5}
print(my_set)

output:

{1, 2, 3, 4, 5}

adding set

1
2
3
4
5
my_set= {1,2,3,4,5,5}
my_set.add(100)
my_set.add(2)
print(my_set)

output

‘{1, 2, 3, 4, 5, 100}`

Read more »

今天想分享如何用 dictionary 字典方式存資料。

key and Value 如何使用宣槓取直

  • collection of of {key:value} pairs
  • no duplicate
  • allow changeable and ordered

declare dictionary 宣告 dict

It's an unorder , it's not next to each other, so we can't use index like we use in list. Dictionary will have a a key and value look like this:

syntax:

declare: dictname= {key:value}
get key: print(dictname['key'])

Access and Get value 取我們的直:

1
2
3
4
dict={
'keyA':1,
'keyB':2
}

取 key 的直: print(dict['keyA']) => 1
取所有直 print(dict) => {'keyA': 1, 'keyB': 2}

宣告不同 data type

Read more »