Khóa học
Chạy và chỉnh sửa mã từ hướng dẫn trực tuyến này
Chạy mãThông thường, người mới bắt đầu học viết script Python ngay trên dòng lệnh, sau đó chuyển sang thực thi script từ dòng lệnh, trong đó script thường được viết bằng một trình soạn thảo văn bản và chạy từ dòng lệnh. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết hơn cách chạy các script Python.
Script và Trình thông dịch Python
Máy tính không thể hiểu mã theo cách con người viết, vì vậy bạn cần một trình thông dịch đứng giữa máy tính và mã do con người viết. Nhiệm vụ của trình thông dịch là chuyển mã sang định dạng mà máy tính có thể hiểu và xử lý.
Trình thông dịch xử lý mã theo các cách sau:
-
Xử lý script Python theo tuần tự
-
Biên dịch mã thành định dạng bytecode, là ngôn ngữ cấp thấp hơn mà máy tính có thể hiểu.
-
Cuối cùng, một Máy ảo Python (PVM) xuất hiện. PVM là lõi vận hành của Python. Đây là một tiến trình lặp qua các chỉ thị của mã bytecode cấp thấp của bạn để chạy chúng từng cái một.
Tương tự như script, bạn có Module, tức là một script Python được nhập (import) và sử dụng trong một script Python khác.
Script Python được lưu với phần mở rộng .py để báo cho máy tính biết đây là một chương trình Python. Khác với Windows, các hệ điều hành dựa trên Unix như Linux và Mac đi kèm Python được cài sẵn. Ngoài ra, cách chạy script Python trên Windows và trên hệ điều hành Unix cũng khác nhau.
Chạy script Python: Chuẩn bị môi trường
Đối với tất cả người dùng, đặc biệt là người dùng Windows, khuyến nghị mạnh mẽ bạn cài đặt Anaconda, có thể tải từ trang web Anaconda. Bạn có thể làm theo hướng dẫn trong hướng dẫn cài đặt Anaconda cho Windows này.
Để cài đặt Python3 trên hệ điều hành Windows, vui lòng xem hướng dẫn thiết lập Python này.
Trình thông dịch dòng lệnh cho Python có thể được truy cập trên các hệ điều hành theo những cách sau:
- Trên
Windows, dòng lệnh được gọi là Command Prompt, có thể truy cập bằng cách nhấp vào menustartvà tìmcommand prompt. Cách khác là vào hộp thoạiRun, gõcmdvà nhấn Enter (Start menu $->$ Run và gõ cmd). Sau đó, nếu Python được cài trong ổ C thì bạn chỉ cần gõ C:\python36\python.exe, trong đó python36 là phiên bản Python (Lưu ý: Đường dẫn này có thể khác tùy thư mục cấu hình Python).
- Trên hệ thống
Mac, rất đơn giản. Bạn chỉ cần mởLaunchpadvà tìmTerminal, rồi trong Terminal gõPython, hệ thống sẽ hiển thị phiên bản Python.

- Tương tự hệ thống Mac, truy cập Terminal trên hệ thống
Linuxcũng rất dễ. Nhấp chuột phải trên màn hình desktop và chọnTerminal, rồi trong Terminal gõPython.
Lưu ý: Trong hướng dẫn này, bạn sẽ học bằng Terminal trên Mac OS.
Vậy thì bắt đầu thôi!
Viết script Python trong Terminal
Hãy xem cách bạn có thể viết mã và tạo đầu ra ngay trong Terminal. Để thực hiện, trước tiên bạn gõ python3, nghĩa là bạn sẽ dùng phiên bản Python3.
Sau đó, bạn có thể viết mã như trong trình soạn thảo văn bản hoặc IDE (môi trường phát triển tích hợp), dù bạn sẽ không có đầy đủ tính năng như trong IDE.
Bạn sẽ bắt đầu với ví dụ kinh điển Hello, World! và xem đầu ra trông như thế nào trong Terminal.

Thật tiện lợi khi chỉ cần mở Terminal và gõ Python3 là bạn có thể lập trình bằng Python. Hãy thử thêm vài ví dụ nữa.

Một điều cần lưu ý trong ví dụ trên là không cần gõ lệnh print bạn vẫn nhận được đầu ra.
Hãy làm đoạn mã phức tạp hơn một chút và sử dụng thư viện NumPy (Numerical Python) để tạo hai mảng và áp dụng vài phép toán. Vài nét về numpy: đây là thư viện Python có khả năng xử lý các mảng và ma trận lớn, đa chiều, cùng bộ sưu tập phong phú các hàm toán học cấp cao để thao tác với các mảng này.

Qua hình trên, bạn có thể thấy với numpy, bạn đã tạo, cộng và nhân hai mảng numpy ngay trong Terminal. Lưu ý rằng hàm multiply trong numpy thực hiện phép nhân theo từng phần tử, trong khi hàm dot lấy tích vô hướng (dot product) của hai ma trận. Để thực hiện lệnh np.dot, bạn cần đảm bảo số cột của ma trận thứ nhất bằng số hàng của ma trận thứ hai, nếu không sẽ gặp value error.
Cách chạy script Python từ Terminal
Chạy script Python từ Terminal rất đơn giản, thay vì viết script Python ngay trong Terminal, bạn chỉ cần dùng một trình soạn thảo văn bản như vim, emacs hoặc notepad++ và lưu với phần mở rộng .py. Sau đó, mở Terminal, chuyển đến thư mục chứa mã và chạy script với từ khóa python theo sau là tên script.

Để tạo tệp terminal.py, dùng vim trong Terminal với tên chương trình là vim terminal.py và dán đoạn mã dưới đây vào. Để lưu, nhấn phím esc rồi gõ wq!. Cuối cùng, để chạy script, bạn chỉ cần gõ python3 terminal.py, và chưa đầy một giây, bạn sẽ thấy đầu ra như trên.
Dưới đây là đoạn mã dùng trong ví dụ ở trên.
import numpy as np
x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)
# Elementwise sum; both produce the array
# [[ 6.0 8.0]
# [10.0 12.0]]
print("Output of adding x and y with a '+' operator:",x + y)
print("Output of adding x and y using 'numpy.add':",np.add(x, y))
# Elementwise difference; both produce the array
# [[-4.0 -4.0]
# [-4.0 -4.0]]
print("Output of subtracting x and y with a '-' operator:",x - y)
print("Output of subtracting x and y using 'numpy.subtract':",np.subtract(x, y))
# Elementwise product; both produce the array
# [[ 5.0 12.0]
# [21.0 32.0]]
print("Output of elementwise product of x and y with a '*' operator:",x * y)
print("Output of element wise product of x and y using 'numpy.multiply':",np.multiply(x, y))
# Elementwise division; both produce the array
# [[ 0.2 0.33333333]
# [ 0.42857143 0.5 ]]
print("Output of elementwise division x and y with a '/' operator:",x / y)
print("Output of elementwise division x and y using 'numpy.divide':",np.divide(x, y))
# Elementwise square root; produces the array
# [[ 1. 1.41421356]
# [ 1.73205081 2. ]]
print("Output of elementwise square root x using 'numpy.sqrt':",np.sqrt(x))
Output of adding x and y with a '+' operator: [[ 6. 8.]
[10. 12.]]
Output of adding x and y using 'numpy.add': [[ 6. 8.]
[10. 12.]]
Output of subtracting x and y with a '-' operator: [[-4. -4.]
[-4. -4.]]
Output of subtracting x and y using 'numpy.subtract': [[-4. -4.]
[-4. -4.]]
Output of elementwise product of x and y with a '*' operator: [[ 5. 12.]
[21. 32.]]
Output of element wise product of x and y using 'numpy.multiply': [[ 5. 12.]
[21. 32.]]
Output of elementwise division x and y with a '/' operator: [[0.2 0.33333333]
[0.42857143 0.5 ]]
Output of elementwise division x and y using 'numpy.divide': [[0.2 0.33333333]
[0.42857143 0.5 ]]
Output of elementwise square root x using 'numpy.sqrt': [[1. 1.41421356]
[1.73205081 2. ]]
Truyền đối số dòng lệnh cho script Python
Đối số dòng lệnh giúp công việc dễ dàng hơn rất nhiều; trong mã sẵn sàng cho sản xuất, đối số dòng lệnh thường được dùng. Nó giúp việc tái lập đầu ra hiệu quả hơn. Ví dụ, giả sử mã của bạn có nhiều đầu vào từ người dùng hoặc tệp được đọc; khi đó dùng đối số dòng lệnh, bạn sẽ không cần mở mã để thay đổi nếu cần đổi tên tệp hoặc giá trị biến.
Để làm điều này, bạn sẽ dùng mô-đun sys, là mô-đun tích hợp sẵn của Python. Trong sys có argv cung cấp danh sách các đối số dòng lệnh truyền vào chương trình Python. sys.argv đọc các đối số dòng lệnh như một danh sách, trong đó phần tử đầu tiên trong danh sách có thể truy cập là sys.argv[1] còn đối số đầu tiên, tức sys.argv[0], luôn là tên chương trình như khi được gọi.
Hãy lấy một ví dụ đơn giản để xem cách hoạt động.
Lưu ý: Đối số dòng lệnh được Python đọc dưới dạng string, vì vậy hãy nhớ chuyển đổi thành integer nếu bạn làm việc với số.
Tương tự ví dụ trước, lưu các dòng mã dưới đây trong trình soạn thảo với tên command_line.py và để chạy mã, gõ python3 command_line.py 10 trong đó 10 là đối số dòng lệnh.
import sys
num = sys.argv[1]
for i in range(int(num)):
print (i)

Nếu bạn không cung cấp đối số dòng lệnh thì sao?
Bạn sẽ nhận lỗi list index out of range, điều này cũng cho thấy sys.argv đọc như một danh sách. Để tránh lỗi như vậy, bạn cần xử lý ngoại lệ, nhưng nội dung này nằm ngoài phạm vi của hướng dẫn.

Ghi đầu ra của script Python vào tệp
Cuối cùng, như một phần bổ sung, hãy xem cách bạn có thể lưu đầu ra của script Python vào tệp txt bằng phím >.
Trước hết, bạn sẽ tạo một thư mục cli và di chuyển mã command_line.py vào thư mục cli. Sau đó, bạn sẽ kiểm tra nội dung thư mục để đảm bảo chưa có tệp txt nào tồn tại.
Tiếp theo, bạn gõ python3 command_line.py 10 > output.txt và cuối cùng kiểm tra nội dung thư mục cli. Lúc này, bạn sẽ thấy tệp output.txt.

Hãy mở và xem nội dung của tệp output.txt.

Từ đầu ra trên, bạn có thể thấy các chữ số 0-9 đã được ghi vào một tệp văn bản chỉ với ký hiệu >.
Kết luận
Chúc mừng bạn đã hoàn thành hướng dẫn.
Vẫn còn nhiều điều để khám phá, như thực thi dựa trên GUI trong Python, chạy script Python tương tác, và chạy script Python từ trình quản lý tệp hoặc từ IDE. Riêng về thực thi dòng lệnh, bạn có thể thử nghiệm trên command prompt của Windows và xem nó khác gì so với hệ điều hành dựa trên Unix.
Nếu bạn mới bắt đầu với Python và muốn học thêm, hãy tham gia khóa Giới thiệu về Khoa học dữ liệu bằng Python của DataCamp.
Câu hỏi thường gặp về Script Python
Script Python là gì?
Một script Python là tệp chứa mã Python. Mã trong một script Python có thể được thực thi bằng cách chạy script, từ dòng lệnh hoặc gọi từ một script khác.
Làm thế nào để tôi tạo một script Python?
Để tạo một script Python, bạn cần một trình soạn thảo văn bản hoặc môi trường phát triển tích hợp (IDE) có thể viết và lưu mã Python. Một số IDE phổ biến cho Python gồm PyCharm, IDLE và Visual Studio Code.
Để tạo một script Python mới, chỉ cần tạo tệp mới và lưu với phần mở rộng .py. Sau đó, bạn có thể viết mã Python trong tệp và lưu lại để chạy script.
Tôi có thể chạy một script Python ở chế độ nền không?
Có, bạn có thể chạy một script Python ở chế độ nền bằng lệnh nohup. Ví dụ:
nohup python script.py &
Lệnh này sẽ chạy script ở chế độ nền và cho phép bạn tiếp tục dùng Terminal trong khi script đang chạy.
Làm cách nào để chạy một script Python từ dòng lệnh?
Để chạy một script Python từ dòng lệnh, bạn cần cài đặt Python trên hệ thống. Sau đó, bạn có thể dùng lệnh sau để thực thi script:
python script.py