Thư viện mã Python hữu ích cho bạn sử dụng hàng ngày (phần 1)

Nội dung được viết bởi Lê Nguyễn Nhật Phương

Trong bài viết này, Gitiho sẽ cung cấp một số ví dụ về các đoạn mã Python để áp dụng trong cuộc sống hàng ngày của bạn với tư cách là một nhà phát triển dữ liệu. Với thư viện mã của Gitiho việc bạn phải làm chỉ đơn giản là sao chép và dán chúng cho công việc của mình. Tuy nhiên trước tiên hãy hiểu những câu lệnh trước nhé! Đối với mỗi ví dụ, bạn sẽ bắt đầu bằng cách tìm hiểu phiên bản cơ bản của mã Python để hiểu cách nó hoạt động. Sau đó, chúng ta sẽ nâng cao công việc và biến nó thành một câu lệnh chuyên nghiệp hơn, bằng cách xác thực dữ liệu và hỗ trợ sử dụng chúng với các đối số mã. 

Chúng ta cùng bắt đầu nhé! 

Phân tích dữ liệu với lập trình Python From Zero to Hero

Thư viện mã Python

Mã Python để lấy danh sách các liên kết từ một trang web 

Trong ví dụ mã đầu tiên này, bạn sẽ xây dựng một công cụ dòng lệnh để thu thập tất cả các liên kết được trình bày trên một trang web nhất định. Vì vậy, bạn sẽ lấy mã HTML từ trang web và tìm kiếm các mẫu đại diện cho các liên kết trong mã này. Để lấy mã HTML từ một trang web, bạn cần thực hiện một yêu cầu HTTP. Thư viện tiêu chuẩn của Python có một số lựa chọn thay thế để thực hiện các yêu cầu HTTP nhưng hầu hết chúng không dễ sử dụng.

May mắn thay, chúng ta có Request, một thư viện triển khai "HTTP cho con người". Vì nó không phải là một phần thư viện chuẩn của Python, bạn sẽ phải cài đặt nó thông qua pip, bằng cách chạy lệnh sau:

pip install requests

Để thực hiện một đoạn mã hữu ích cho công việc hàng ngày, bạn sẽ phải xem xét một số khía cạnh như xác thực đầu vào và sử dụng các đối số dòng lệnh. Tuy nhiên, trước khi đi vào các chi tiết này, chúng ta hãy bắt đầu đoạn mã bằng cách đơn giản nhất có thể, như sau:

import requests
import re
 
url = input("Enter the URL: ")
 
html = requests.get(url).text
 
links = re.findall('"(https?://.*?)"', html)
 
for link in links:
    print(link)

Ở đây bạn đang sử dụng các yêu cầu để có được mã HTML từ trang web và tái xử lý HTML cho các liên kết trong mã HTML. 

Gói re làm việc với các biểu thức thông thường, cho phép bạn tìm kiếm các mẫu trong văn bản và được sử dụng rộng rãi cho các ứng dụng phân tích dữ liệu. 

URL được lấy bởi người dùng nhập và được lưu trữ trong biến url. Sau đó, request.get (url) .text được sử dụng để thực hiện yêu cầu URL và lấy HTML từ các phản hồi. 

Tiếp theo, bạn sử dụng re.findall để tìm kiếm các mẫu liên kết trong văn bản HTML. Chuỗi "(https?: //.*?)" đại diện cho biểu thức mà bạn đang tìm kiếm trong văn bản. Lưu ý rằng "(https?: //.*?)" Đại diện cho các liên kết, bắt đầu bằng http: // hoặc https: // bên trong dấu ngoặc kép của HTML được truy xuất. 

Tất cả các kết quả phù hợp với biểu thức được lưu trữ trong danh sách liên kết. Bằng cách này, bạn chỉ cần lặp lại nó và in nội dung của nó để có được danh sách các liên kết có trong HTML, như được thực hiện trong vòng lặp for. Cuối cùng, hãy thử lưu chương trình dưới dạng get_urls.py và chạy nó. Bạn sẽ nhận được kết quả như sau:

$ python get_urls.py
Enter the URL: http://www.gitiho.com
https://cdn.gitiho.com/assets/favicon/apple-touch-icon.png?v=1
https://cdn.gitiho.com/assets/favicon/favicon-32x32.png?v=1
https://cdn.gitiho.com/assets/favicon/favicon-16x16.png?v=1
https://cdn.gitiho.com/assets/favicon/site.webmanifest?v=1
https://cdn.gitiho.com/assets/favicon/safari-pinned-tab.svg?v=1
https://cdn.gitiho.com/assets/favicon/favicon.ico?v=1
https://cdn.gitiho.com/assets/favicon/browserconfig.xml?v=1
https://cdn.gitiho.com
https://connect.facebook.net https://www.google-analytics.com https://stats.g.doubleclick.com https://cdn.gitiho.com/assets/fonts/icons/gitiho-icons.woff2?1.25
https://cdn.gitiho.com/assets/fonts/open-sans/v17-latin-ext/open-sans-300.woff2
https://cdn.gitiho.com/assets/fonts/open-sans/v17-latin-ext/open-sans-400.woff2
https://cdn.gitiho.com/assets/fonts/open-sans/v17-latin-ext/open-sans-400i.woff2
(...)

Bây giờ bạn đã có một kết quả cơ bản đang hoạt động, sẽ rất thú vị khi chúng ta thực hiện một số thao tác nâng cao để biến nó thành một công cụ hữu ích cho công việc của bạn. Chúng ta sẽ bắt đầu bằng cách xác thực thông tin mà người dùng nhập vào với mã sau:

import requests
import re
 
while True:
    url = input("Enter the URL: ")
 
    if url == "":
        print("Invalid URL")
        continue
    break
 
html = requests.get(url).text
 
links = re.findall('"(https?://.*?)"', html)
 
for link in links:
    print(link)

Đây là một cách hữu ích để xác thực dữ liệu người dùng, có được bằng hàm input().

Cuối cùng, điều quan trọng là thêm khả năng chạy lệnh bằng cách sử dụng các đối số câu lệnh và bạn có thể sử dụng nó bằng cách cung cấp URL trực tiếp từ dòng lệnh. Đối với điều này, bạn có thể dựa vào Argparse, một modun từ thư viện tiêu chuẩn của Python giúp dễ dàng viết các giao diện lệnh thân thiện với người dùng, như được hiển thị trong đoạn mã sau:

import requests
import re
import argparse
 
parser = argparse.ArgumentParser(
    description="Get list of links from a website"
)
 
parser.add_argument("url", nargs="?", help="URL", default=None)
 
arguments = parser.parse_args()
 
use_arguments = True if arguments.url is not None else False
 
# Check whether url will be obtained from command line argument
# or from user input
if use_arguments:
    url = arguments.url
else:
    while True:
        url = input("Enter the URL: ")
 
        if url == "":
            print("Invalid URL")
            continue
        break
 
html = requests.get(url).text
 
links = re.findall('"(https?://.*?)"', html)
 
for link in links:
    print(link)

Để sử dụng Argparse, trước tiên bạn cần nhập mô-đun, điều này được thực hiện với import argparse. Sau đó, bạn cần phải cấu hình nó, về cơ bản bao gồm ba bước: 

  1. Khởi tạo một đối tượng ArgumentParser sẽ nhận thông tin của các đối số dòng lệnh bạn muốn sử dụng và phân tích cú pháp để truy xuất thông tin do người dùng cung cấp thông qua dòng lệnh. Ở đây, điều này được thực hiện với đối tượng phân tích cú pháp

  2. Cấu hình các đối số dòng lệnh mà bạn sẽ sử dụng. Ở đây, chỉ có một đối số được xem xét, có tên là url. Lưu ý rằng đối số được tạo bằng nargs = "?" và default=None, điều này làm cho đối số này không bắt buộc và đặt nó thành 'không có' trong trường hợp nó không được cung cấp. Điều này rất hữu ích để kiểm tra xem chương trình được sử dụng trong chế độ dòng lệnh hay trong chế độ tương tác, như bạn sẽ thấy ở phần sau. 

  3. Phân tích cú pháp các đối số và truy xuất chúng để bạn có thể sử dụng thông tin trên mã của mình. Điều này được thực hiện bởi arguments = parser.parse_args()

Để cho biết chế độ dòng lệnh hay chế độ tương tác đang được sử dụng, biến use_arguments được tạo. Nó là True nếu chương trình đang được sử dụng với các đối số dòng lệnh. Để tính toán nó, bạn sử dụng arg.url , mặc định là 'None - Không có' trong trường hợp không có đối số nào được cung cấp. 

Sử dụng use_arguments có thể kiểm soát xem để có được URL từ đối số dòng lệnh hoặc từ đầu vào của người sử dụng. Lưu ý rằng, trong trường hợp chương trình được sử dụng ở chế độ dòng lệnh, bạn không cần kiểm tra giá trị trống. Thực tế đơn giản là có URL từ một đối số dòng lệnh chỉ ra rằng nó không trống. 

Bằng cách sử dụng Argparse, bạn sẽ có được một giao diện dòng lệnh rất đẹp, bao gồm các thông báo trợ giúp, được xác định trong quá trình thiết lập. Hãy thử lưu các thay đổi vào get_urls.py và chạy nó với python get_urls.py --help. Bạn sẽ nhận được kết quả sau:

$ python get_urls.py --help
usage: get_urls.py [-h] [url]
 
Get list of links from a website
 
positional arguments:
  url         URL
 
optional arguments:
  -h, --help  show this help message and exit

Như bạn có thể thấy, Argparse cho phép bạn xây dựng các giao diện dòng lệnh chuyên nghiệp một cách dễ dàng. Bây giờ bạn có thể nhập URL thông qua các câu lệnh. Ví dụ, bạn có thể chạy:

python get_urls.py http://www.gitiho.com

Bây giờ bạn đã hiểu được những điều cơ bản về xác thực đầu vào và xây dựng giao diện dòng lệnh, chúng ta sẽ cùng nhau xây dựng một số ví dụ để làm việc với hình ảnh nhé! 

Xem thêm: So sánh VBA và Python: Ngôn ngữ nào tốt hơn cho phân tích dữ liệu

Mã Python để nhận độ phân giải của hình ảnh 

Trong ví dụ này, chúng ta sẽ xây dựng một dòng lệnh để xem được độ phân giải của hình ảnh. Ở đây mình sẽ sử dụng thư viện Pillow, cho phép người dùng thực hiện một số tác vụ liên quan đến xử lý hình ảnh. Vì Pillow không phải là một phần của thư viện chuẩn của Python, bạn sẽ phải cài đặt nó bằng pip, bằng cách chạy lệnh sau:

pip install pillow

Sau khi quá trình cài đặt kết thúc, bạn có thể bắt đầu thực hiện những câu lệnh đơn giản đơn giản của công việc này bằng đoạn mã sau:

from PIL import Image
 
image = input("Enter the image file name: ")
im = Image.open(image)
print('Image resolution is (w, h): ' + str(im.size))

Cũng giống như trong ví dụ trước, những câu lệnh đầu tiên này là những đoạn mã đơn giản nhất, không có xác thực đầu vào hoặc sử dụng các đối số dòng lệnh. 

Tại đây, bạn đang nhập modun hình ảnh từ Pillow. Trong phần tiếp theo, bạn lấy tên tệp từ dữ liệu đầu vào của người dùng và mở hình ảnh bằng Image.open ()

Cuối cùng, chúng ta sử dụng lệnh .size () để lấy độ phân giải của hình ảnh và xuất ra một thông báo phù hợp với thông tin này. 

Hãy thử lưu chương trình dưới dạng Resolution_image.py, chạy nó và nhập tên tệp hình ảnh để xem nó hoạt động như thế nào. Bằng cách sử dụng hình ảnh sau, có tên lenna.png , bạn sẽ nhận được kết quả hiển thị như sau:

Thư viện mã Python hữu ích cho bạn sử dụng hàng ngày (phần 1)

$ python resolution_image.py 
Enter the image file name: lenna.png
Image resolution is (w, h): (512, 512)

Bây giờ đã đến lúc bạn thêm xác thực dữ liệu đầu vào và hỗ trợ cho các đối số dòng lệnh vào chương trình. Trong ví dụ này, bạn sẽ xác thực đầu vào của người dùng và kiểm tra xem nó có thực sự là một hình ảnh hay không. Đối với thao tác này, bạn có thể dựa vào lệnh Pillow, điều này sẽ tạo ra lỗi khi bạn cố gắng mở một tệp không phải là hình ảnh, như trong đoạn mã sau:

from PIL import Image
import argparse
import sys
 
parser = argparse.ArgumentParser(description="Print the resolution of an image")
 
parser.add_argument("image", nargs="?", help="Image", default=None)
 
arguments = parser.parse_args()
 
use_arguments = True if arguments.image is not None else False
 
while True:
    if use_arguments:
        image = arguments.image
    else:
        image = input("Enter the image file name: ")
 
    try:
        im = Image.open(image)
    except:
        print('Invalid image')
        if use_arguments:
            sys.exit()
        continue
    break
 
print('Image resolution is (w, h): ' + str(im.size))

Cấu trúc rất giống với đoạn mã bạn đã sử dụng trong ví dụ trước phải không?

Sau khi nhập các thư viện, bạn đã cấu hình chi tiết trình phân tích cú pháp đối số dòng lệnh. Trong trường hợp này, chỉ có một đối số có tên là image đang được sử dụng. 

Chúng ta sẽ sử dụng biến use_arguments để kiểm tra xem chương trình đang được sử dụng trong các đối số dòng lệnh hay trong chế độ tương tác, giống như bạn đã làm trong ví dụ trước. 

Trong mã while, mọi thứ bắt đầu khác một chút so với ví dụ trước. Nhớ lại rằng, bên cạnh việc xác thực đầu vào tương tác, bạn cũng sẽ xác thực đối số dòng lệnh trong trường hợp này.

Tất nhiên, có những cách khác để thực hiện điều này. Tuy nhiên, thực hiện trong khi vòng lặp theo cách này cho phép bạn chỉ sử dụng một xác nhận cho cả hai trường hợp, người sử dụng đầu vào tương tác và các đối số dòng lệnh. 

Tiếp theo, đến mã xác thực. Bạn đang sử dụng lệnh except, cho phép bạn chạy một đoạn mã và thực hiện một số hành động trong trường hợp nó gây ra một số lỗi. Trong trường hợp này, bạn đang cố tải hình ảnh bằng Image.open () và nếu xảy ra lỗi (ví dụ: nếu tên tệp do người dùng cung cấp không tham chiếu đến hình ảnh), Python sẽ hiển thị thông báo lỗi. 

Lưu ý rằng, khi chương trình được chạy bằng cách sử dụng các đối số dòng lệnh, sau khi hiển thị thông báo lỗi, chương trình sẽ thoát, vì nó đến sys.exit (). Mặt khác, khi chương trình được chạy, điều kiện trong đoạn mã là sai thì khởi động lại vòng lặp, do lệnh continue. 

Sau đó, chúng ta sẽ thực hiện lưu các thay đổi vào Resolution_image.py và thử chạy nó với câu lệnh như sau như sau:

python resolution_image.py lenna.png

Mã Python để xoay hình ảnh 

Trong ví dụ này, chúng ta sẽ tiếp tục sử dụng Pillow, lần này là để xây dựng câu lệnh để thực hiện xoay các hình ảnh. Vì vậy, trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt Pillow bằng cách chạy pip install pillow nhé

Chúng ta hãy bắt đầu bằng một đoạn mã đơn giản trước nhé:

from PIL import Image
 
image = input("Enter the image file name: ")
angle = input("Enter the rotation angle in degrees: ")
angle = float(angle)
im = Image.open(image)
im_rotate = im.rotate(angle, expand=True)
im_rotate.save("rotated_" + image)

Như bạn có thể thấy, mã này rất giống với mã được sử dụng trong phần đầu của ví dụ trước. Tuy nhiên, bên cạnh việc lấy tên tệp hình ảnh, bạn cũng nhận được một góc xoay từ dữ liệu đầu vào của người dùng. 

Khi input () trả về các chuỗi, bạn cần chuyển đổi anglec thành float, để có thể sử dụng nó với Pillow và thực hiện xoay hình ảnh. 

Tiếp theo, bạn mở ảnh như ví dụ trước rồi thực hiện xoay bằng phương thức .rotate (), lưu kết quả vào đối tượng im_rotate

Cuối cùng, bạn lưu kết quả được lưu trữ trong im_rotate dưới dạng ảnh mới, với một tệp có tên cùng tiền tố là rotated_

Hãy thử lưu mã dưới dạng rotate_image.py và sau đó chạy mã đó bằng cách nhập lenna.png được sử dụng trong ví dụ trước, để thực hiện xoay 60 độ:

python rotate_image.py

python rotate_image.py
Enter the image file name: lenna.png
Enter the rotation angle: 60

Thư viện mã Python hữu ích cho bạn sử dụng hàng ngày (phần 1)

Như trong các ví dụ trước, bây giờ bạn sẽ thêm xác thực đầu vào và hỗ trợ cho các đối số dòng lệnh vào chương trình. Trong trường hợp này, bạn sẽ cần xác thực hai yếu tố đầu vào: tên tệp và góc. Đối với điều đó, chúng ta viết mã Python như sau:

from PIL import Image
import argparse
import sys
 
parser = argparse.ArgumentParser(description="Rotate an image")
 
parser.add_argument("image", nargs="?", help="Image", default=None)
parser.add_argument("angle", nargs="?", type=float, help="Angle", default=None)
 
arguments = parser.parse_args()
 
use_arguments_image = True if arguments.image is not None else False
use_arguments_angle = True if arguments.angle is not None else False
 
# Validation for image file name
while True:
    if use_arguments_image:
        image = arguments.image
    else:
        image = input("Enter the image file name: ")
 
    try:
        im = Image.open(image)
    except:
        print("Invalid image")
        if use_arguments_image:
            sys.exit()
        continue
    break
 
# Validation for angle
if use_arguments_angle:
    angle = arguments.angle
else:
    while True:
        angle = input("Enter the rotation angle in degrees: ")
 
        try:
            angle = float(angle)
        except:
            print("Invalid angle")
            continue
        break
 
im_rotate = im.rotate(angle, expand=True)
im_rotate.save("rotated_" + image)

Một lần nữa, hãy lưu ý rằng đoạn mã của ví dụ này rất giống với mã được sử dụng trong ví dụ trước. Sự khác biệt chính là bạn đang sử dụng hai dữ liệu đầu vào của người dùng thay vì một như ví dụ trước. Đó là lý do tại sao bạn đang sử dụng một số cấu trúc đến tận hai lần: 

  • parser.add_argument () bao gồm các đối số dòng lệnh "image""angle". Lưu ý rằng khi bao gồm đối số dòng lệnh "angle", bạn đang sử dụng type = float, do đó bạn không cần phải lo lắng về việc xác thực vì Argparse thực hiện nó cho bạn. 

  • Thay vì use_arguments, bạn đang sử dụng hai biến có tên use_arguments_imageuse_arguments_angle để cho biết liệu mỗi đối số có được cung cấp thông qua dòng lệnh hay không. Người dùng chỉ có thể cung cấp tên hình ảnh dưới dạng đối số dòng lệnh và trong trường hợp này, chương trình sẽ yêu cầu đối số angle. 

Bạn có thể thấy rằng vòng lặp sử dụng để xác nhận tên file ảnh là giống trong ví dụ trước. Tuy nhiên, việc xác nhận angle - góc được thực hiện hơi khác một chút đó là bởi vì bạn không cần xác thực góc trong trường hợp nó được cung cấp dưới dạng đối số dòng lệnh. Bạn chỉ cần quan tâm đến trường hợp tương tác, vì bạn đã thêm đối số bằng cách sử dụng type = float khi bạn xác định đối số "angle" bằng parser.add_argument ()

Hãy thử lưu các thay đổi vào rotate_image.py và chạy nó, trường hợp tương tác hoặc sử dụng các đối số dòng lệnh như sau:

python rotate_image.py lenna.png 60

Sau đó, chúng ta chạy lệnh và chỉ cung cấp tên tệp:

python rotate_image.py lenna.png

Để kiểm tra xác thực do Argparse cung cấp, bạn hãy chạy nó để cung cấp giá trị góc không hợp lệ và kết quả sẽ nhận được những điều sau:

$ python rotate_image.py lenna.png text
usage: rotate_image.py [-h] [image] [angle]
rotate_image.py: error: argument angle: invalid float value: 'text'

Xem thêm: Python - công cụ phân tích dữ liệu phổ biến nhất năm 2021

Mã Python để thay đổi kích thước hình ảnh 

Trong ví dụ này, chúng ta sẽ hoàn thành bộ công cụ thao tác hình ảnh với Python bằng cách triển khai lệnh Python thay đổi kích thước. Và chúng ta sẽ sử dụng Pillow một lần nữa. Vì vậy, hãy chắc chắn rằng bạn đã cài đặt nó bằng cách chạy pip install pillow

Bên cạnh đó, bạn sẽ sử dụng các kỹ thuật được trình bày trong các ví dụ trước. Vì vậy, hãy đảm bảo bạn xem qua chúng để biết chi tiết về việc viết mã trước khi thử ví dụ này. 

Chúng ta tiếp tục sử dụng lệnh Pilow như sau:

from PIL import Image
 
image = input("Enter the image file name: ")
width = input("Enter the new width: ")
height = input("Enter the new height: ")
im = Image.open(image)
width = int(width)
height = int(height)
im_resize = im.resize((width, height), resample=Image.BICUBIC)
im_resize.save("resized_" + image)

Nếu bạn so sánh mã này với mã được sử dụng ở đầu các ví dụ trước, bạn sẽ nhận thấy chúng giống nhau. Tuy nhiên có vài sự khác biệt chính là: 

  • Ở đây bạn đang xem xét ba đối số: hình ảnh, chiều rộngchiều cao

  • chiều rộngchiều cao phải là giá trị số nguyên, bạn thực hiện chuyển đổi chúng bằng cách sử dụng int ()

  • Để thực hiện thay đổi kích thước của hình ảnh, bạn sử dụng lệnh .resize (), lệnh này nhận một bộ giá trị để xác định kích thước mới trong biểu mẫu (chiều rộng, chiều cao). Đối số resample=Image.BICUBIC xác định thuật toán được sử dụng để tính toán giá trị của các pixel trong hình ảnh đã thay đổi kích thước. 

  • Sau khi thực hiện thay đổi kích thước, bạn lưu ảnh mới với tên tệp có tiền tố là resize_

Sau đó, chúng ta sẽ lưu mã dưới dạng resize_image.py và chạy nó bằng cách nhập lenna.png (tên hình ảnh) để thay đổi kích thước của nó thành một hình ảnh mới với 256 pixel (chiều rộng) và 128 pixel (chiều cao):

$ python resize_image.py
Enter the image file name: lenna.png
Enter the new width: 256
Enter the new height: 128

Thư viện mã Python hữu ích cho bạn sử dụng hàng ngày (phần 1)

Bây giờ, để hoàn thành chương trình, chúng ta thêm xác thực đầu vào và hỗ trợ cho các đối số với đoạn mã sau:

from PIL import Image
import argparse
import sys
 
parser = argparse.ArgumentParser(description="Resize an image")
 
parser.add_argument("image", nargs="?", help="Image", default=None)
parser.add_argument("width", nargs="?", type=int, help="Width", default=None)
parser.add_argument("height", nargs="?", type=int, help="Height", default=None)
 
arguments = parser.parse_args()
 
use_arguments_image = True if arguments.image is not None else False
use_arguments_width = True if arguments.width is not None else False
use_arguments_height = True if arguments.height is not None else False
 
# Validation for image file name
while True:
    if use_arguments_image:
        image = arguments.image
    else:
        image = input("Enter the image file name: ")
 
    try:
        im = Image.open(image)
    except:
        print("Invalid image")
        if use_arguments_image:
            sys.exit()
        continue
    break
 
# Validation for width
if use_arguments_width:
    width = arguments.width
else:
    while True:
        print("Current resolution is (w, h): " + str(im.size))
        width = input("Enter the new width: ")
        try:
            width = int(width)
        except:
            print("Invalid width")
            continue
        break
 
# Validation for height
if use_arguments_height:
    height = arguments.height
else:
    while True:
        print("Current resolution is (w, h): " + str(im.size))
        height = input("Enter the new height: ")
        try:
            height = int(height)
        except:
            print("Invalid height")
            continue
        break
 
im_resize = im.resize((width, height), resample=Image.BICUBIC)
im_resize.save("resized_" + image)

Điểm khác nhau của đoạn mã trong ví dụ này với các ví dụ trước là: 

  • Bạn đang sử dụng ba đối số để lấy tên tệp hình ảnh, chiều rộng và chiều cao và áp dụng để tạo hình ảnh mới. 

  • Vì chiều rộng và chiều cao phải là giá trị số nguyên, vì vậy bạn cần thêm các đối số này trên Argparse bằng cách sử dụng type = int, để bạn không phải quan tâm đến việc xác thực chúng trong trường hợp chúng được sử dụng làm đối số dòng lệnh. 

  • Thay vì hi đối số xác thực, ở đây bạn đang sử dụng ba. Lưu ý rằng đối số xác thực cho tên tệp hình ảnh giống hệt nhau trong khi đối số xác thực chiều rộng và chiều cao tương tự với đối số được sử dụng để xác thực góc trong ví dụ trước. 

Tiếp theo, chúng ta thực hiện lưu các thay đổi vào resize_image.py và chạy nó để kiểm tra các xác thực hoặc sử dụng các đối số dòng lệnh. Dưới đây là một số thử nghiệm bạn có thể thực hiện: 

python resize_image.py lenna.png 256 128
python resize_image.py lenna.png 256
python resize_image.py lenna.png
python resize_image.py

Bạn cũng có thể kiểm tra xác thực do Argparse thực hiện bằng cách cung cấp một số đầu vào không hợp lệ:

python resize_image.py lenna.png text1 text2

Tất cả các ví dụ trên là một khởi đầu tốt để bạn làm quen với các mã lệnh Python hoạt động với hình ảnh. Trong đó, thư viện Pillow rất hữu ích, nó bao gồm một số thuật toán thao tác hình ảnh.

Xem thêm: So sánh sự khác biệt giữa Python và R. Ngôn ngữ nào phù hợp với bạn?

Kết luận

Gitiho đã cùng bạn tìm hiểu về các mã lệnh Python phổ biến, có thể sử dụng trong công việc hàng ngày của bạn rồi đó. Hãy luyện tập ngay với các ví dụ mà mình đã nêu ở trên đã thành thạo Python ngay hôm nay nhé! 

Nếu bạn có bất kỳ câu hỏi nào liên quan đến bài viết này hoặc về bất kỳ chủ đề Python khác, hãy cho chúng mình biết trong phần bình luận bên dưới. Và đừng quên theo dõi chúng mình để xem thêm các bài viết bổ ích khác nhé!

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông