Showing posts with label lesson. Show all posts
Showing posts with label lesson. Show all posts

Sunday, June 23, 2013

[TIL] Chạy command từ python script

và liên thiên về ruby, bash...

Trong python 2.7, có đến vài cách để chạy 1 câu lệnh linux. Điều này thực sự trái với triết lý của Python:
There should be one-- and preferably only one --obvious way to do it.
Các cách để chạy 1 command:
  • dùng lệnh os.system
  • dùng module subprocess
  • dùng module commands
  • dùng Popen
ai cũng hiểu rằng python có khả năng xử lý tốt hơn bash, nhưng hãy nhìn ví dụ đơn giản dưới đây khi cần lấy output của một câu lệnh:

bash:
ls_output=`ls -la | grep hvn`
hoặc
ls_output=$(ls -la | grep hvn)

Monday, June 17, 2013

[TIL] Luôn setup logging cho python script

Khi bắt tay vào viết 1 python script / program nào, cần setup logging ngay từ đầu. Quá trình code sẽ không cần sử dụng print nữa, vì có thể add handler stdout / stderr cho logger, nhờ vậy logger tương đương với các lệnh print. Khi xong, chỉ cần bỏ cái handler hoặc set debug level khác là được, không mất công xóa print.

(Một khi đã dùng python nghĩa là công việc khá phức tạp, dùng vài dòng bash không thể làm / khó làm)

Friday, May 31, 2013

[TIL] luôn sử dụng argparse

Python 2.7

Khi viết script python có pass các argument, cách đơn giản nhất là dùng sys.argv nhưng chỉ cần việc xử lý phức tạp hơn 1 chút, xuất hiện khoảng 3,4 argument, hay đang trong giai đoạn thiết kế thì cách tốt nhất là dùng thư viện argparse. Mất công học một tí nhưng với vài dòng là đã có 1 argparser xịn, dễ dùng.