- DZone
- mã hóa
- ngôn ngữ
- Trình tạo mã đơn giản sử dụng tính năng tuyệt vời của Python
Trình tạo mã đơn giản sử dụng tính năng tuyệt vời của Python
Bipin Patwardhan
·tháng ba. 20, 22 · Hướng dẫnThích [3]
Bình luận
Tiết kiệm
tiếng riu ríu
5. 60 nghìn Lượt xem
Tham gia cộng đồng DZone và có được trải nghiệm thành viên đầy đủ
Tham gia miễn phíĐối với dự án gần đây nhất của tôi, tôi đã viết một vài trình tạo mã - ba biến thể của trình tạo ứng dụng Python/Spark và ít nhất bốn biến thể của trình tạo Airflow DAG. Các biến thể khác nhau là cần thiết khi các yêu cầu và độ phức tạp của đầu ra phát triển trong một khoảng thời gian. Sử dụng trải nghiệm này, tôi sẽ chỉ cho bạn cách bắt đầu hành trình viết trình tạo mã bằng một tính năng thú vị của Python.
Với mục đích của bài viết này, tôi sẽ sử dụng chương trình Python để tạo ứng dụng Python/Spark cơ bản để lấy và hiển thị 10 hàng của bảng đã chỉ định. Ứng dụng sẽ được tạo như bên dưới
con trăn
import os
import sys
import pyspark
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import SparkSession
spark_session = SparkSession.builder.appName["generator"].getOrCreate[]
try:
df = spark_session.sql["select * from user_names"]
df.show[10, False]
except Exception as e:
print["Got an error {er}".format[er=str[e]]]
spark_session.stop[]
Phiên bản 1
Phương pháp đơn giản nhất để tạo ứng dụng này là sử dụng các câu lệnh in như bên dưới
con trăn
import os
import sys
print["import os"]
print["import sys"]
print["import pyspark"]
print["from pyspark import SparkContext"]
print["from pyspark.sql import SQLContext"]
print["from pyspark.sql import SparkSession"]
print[""]
print["spark_session = SparkSession.builder.appName[\"generator\"].getOrCreate[]"]
print["try:"]
print[" df = spark_session.sql[\"select * from user_names\"]"]
print[" df.show[10, False]"]
print["except Exception as e:"]
print[" print[\"Got an error {er}\".format[er=str[e]]]"]
print[""]
Phiên bản 2
Điều gì sẽ xảy ra nếu chúng tôi muốn cho phép người dùng cung cấp tên của ứng dụng và tên của bảng để có thể kết hợp chúng trong ứng dụng? . Trình tạo mã của chúng tôi phải được sửa đổi như bên dưới
con trăn
import os
import sys
app_name = sys.argv[1]
table_name = sys.argv[2]
print["import os"]
print["import sys"]
print["import pyspark"]
print["from pyspark import SparkContext"]
print["from pyspark.sql import SQLContext"]
print["from pyspark.sql import SparkSession"]
print[""]
print["spark_session = SparkSession.builder.appName[\"" + app_name + "\"].getOrCreate[]"]
print["try:"]
print[" df = spark_session.sql[\"select * from " + table_name + "\"]"]
print[" df.show[10, False]"]
print["except Exception as e:"]
print[" print[\"Got an error {er}\".format[er=str[e]]]"]
print[""]
Phiên bản 3
Trong phiên bản 2, bạn có thể biết phần nào của mã là trình tạo mã và phần nào của mã là mã được tạo không? . Hãy tưởng tượng mã sẽ trông như thế nào nếu chúng ta phải tạo một chương trình rất lớn và phức tạp. Như bạn có thể tưởng tượng, trình tạo mã sẽ không dễ bảo trì.
Hãy để chúng tôi đơn giản hóa trình tạo mã. Python cho phép chúng ta định nghĩa các khối văn bản bên trong ba dấu nháy kép hoặc ba dấu nháy đơn. Văn bản không chỉ có thể trải rộng trên nhiều hàng mà còn có thể chứa các trình giữ chỗ có thể thay đổi. Giữ chỗ biến là gì? . Và khi nào một khối văn bản được đánh giá? .
Trình tạo mã của chúng tôi trông như thế nào?
con trăn
import os
import sys
template_application = """ # note the triple quotes that indicate start of block
import os
import sys
import pyspark
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import SparkSession
spark_session = SparkSession.builder.appName["{app_name}"].getOrCreate[]
try:
df = spark_session.sql["select * from {table_name}"]
df.show[10, False]
except Exception as e:
print["Got an error {{er}}".format[er=str[e]]]
spark_session.stop[]
""" # note the triple quote that indicate end of block
app_name = sys.argv[1]
table_name = sys.argv[2]
print[template_application.format[app_name=app_name, table_name=table_name]]
Chúng tôi đang xác định tất cả mã của mình trong biến có tên 'template_application'. Biến cũng chứa các trình giữ chỗ biến cho tên ứng dụng [app_name] và tên bảng [table_name]. Chúng ta phải cẩn thận để cung cấp các giá trị cho các biến này. Chúng tôi làm điều đó trong câu lệnh in, nơi chúng tôi cung cấp các giá trị thực bằng cách sử dụng từ khóa định dạng.
Lưu ý quan trọng.
Bạn sẽ lưu ý rằng chúng tôi đã đặt biến 'er' bên trong dấu ngoặc nhọn kép. Điều này là do chúng tôi muốn biến vẫn là một biến trong mã được tạo. Bằng cách sử dụng dấu ngoặc nhọn kép, Python sẽ loại bỏ một bộ dấu ngoặc nhọn trong quá trình đánh giá câu lệnh định dạng, nhưng sẽ giữ lại bộ thứ hai. Bộ thứ hai sau đó xuất hiện dưới dạng một biến trong mã được tạo.
Chúc bạn viết mã vui vẻ.
Ứng dụng Python [ngôn ngữ] ứng dụng
Ý kiến của những người đóng góp DZone là của riêng họ
Phổ biến trên DZone
- Trí tuệ nhân tạo [AI] giải cứu an ninh mạng
- Khả năng quan sát CI có thể củng cố quy trình DevSecOps của bạn như thế nào?
- Có gì mới trong. Mạng 7?
- Thử nghiệm khung HTTP hiệu suất cao
Bình luận