2022年7月26日

Mov all jpg files ...

import os import shutil images = [f for f in os.listdir() if '.jpg' in f.lower()] os.mkdir('downloaded_images') for image in images: new_path = 'downloaded_images/' + image shutil.move(image, new_path) ref:python move file

2022年7月17日

[ ] and : :

Arryay 的'部份' 複製,可以用 ":"
[i:j:s]
  • i : from, default 0
  • j : to, default end
  • s : step, default 1, 也可以不寫
所以
A = B[:] 或是 B[::]
就是複製全部。
然後
A = B[::-1]
把B 倒著排

2020年6月11日

command line 參數

import sys print("the number of arguments is %d" % len(sys.argv)) print(sys.argv) for i in range(len(sys.argv)): print("%d:" % i + sys.argv[i]) 執行:
$ python testarg.py a b c
the number of arguments is 4
['testarg.py', 'a', 'b', 'c']
0:testarg.py
1:a
2:b
3:c

2020年6月9日

modify module path in source code

import module 的 search path,可以用下面的 code 列出來.. import sys print(sys.path) 結果: ['', 'C:\\Users\\charles.chang\\Anaconda3\\envs\\mytest\\python38.zip', 'C:\\Users\\charles.chang\\Anaconda3\\envs\\mytest\\DLLs', 'C:\\Users\\charles.chang\\Anaconda3\\envs\\mytest\\lib', 'C:\\Users\\charles.chang\\Anaconda3\\envs\\mytest', 'C:\\Users\\charles.chang\\Anaconda3\\envs\\mytest\\lib\\site-packages'] 所以就可以修改 sys.path,變更程式 import module 的 search path..
例如 sys.path.insert(0,"C:\\mymodule") 當然,這行code 要寫在 import 之前...

2020年5月31日

numpy : save and load. 存檔與讀檔

numpy 的 save 和 load 可以作到把 save 物件的身份和資料都紀錄。 例如:complex.. import numpy as np A = np.array([1+2j, 3+4j, 5+6j]) np.save('Adata',A) B = np.load('Adata.npy') print(B) 執行結果: [1.+2.j 3.+4.j 5.+6.j] B 從 Adata.npy load 資料後,自動成為 complex type array.

2019年6月19日

venv : virtual environment

venv 會在目前目錄下 create 一個 virtual environment 用的目錄(在 venc create 時指定)。
並且把目錄加進 sys.path 中。

之後,在這個virtual environment 中安裝的 python module,都會裝在這個目錄中,而不會是系統 /usr/lib/...

這樣是為了解決 python module 一堆相依和版本衝突情況。
讓每一個 project 存放自己需要的版本。
--- 但是這樣project folder 不就變很大?

使用方式是:
到project folder 下.. python3 -m venv myenv source myenv/bin/activate 然後你就會看到 prompt 會多一個 (myenv),代表你現在是在 virtual environment 的環境。
要退出的話,直接: $ deactivate


python2 跟 python3 的 command 不一樣,但是動作是相同的。
python2 沒有 venv 這個 command,所以要直接用virtualenv: virtualenv myenv source myenv/bin/activate


另外,在 venv 狀態下 pip install 的 package 都會安裝在local 的 myenv 目錄下,
所以將來要在另一個地方重建的話,有必要要把目前venv 安裝的東西都再裝一次。
先把安裝的module列出: $ pip freeze > requirements.txt 這個 requirement.txt 就是目前venv環境中所有安裝的 module.

之後,到新環境,只要: $ pip install -r requirements.txt 就可以把一樣的 module 都裝起來

2018年6月13日

decorator -- '@' symbol

在 python bluetooth 的 sample code 看到很多 function 開頭有 @ 符號,
找了一下,原來是 python 特有的 decorator 功能。

這一篇 的說明,配合循序漸進的 example code,可以清楚說明這個 @ 符號的功能。

因為沒辦法簡短的說明,所以...
@deco_function
def myfunc():
 ..
經過@deco_function 之後,myfunc( ) 已經不是 myfunc( ) 了....


這一篇 也一樣...循序漸進...
這一篇 是中文的...