Ví dụ getstatusoutput lệnh Python
Tài liệu. lệnh-ví dụ-1. lệnh nhập py stat, đầu ra = lệnh. getstatusoutput("ls -lR") in "trạng thái", "=>", in stat "đầu ra", "=>", len(đầu ra), "byte"
status => 0 output => 171046 bytes Nếu bạn đã từng muốn đơn giản hóa tập lệnh dòng lệnh của mình hoặc sử dụng Python cùng với các ứng dụng dòng lệnh—hoặc bất kỳ ứng dụng nào cho vấn đề đó—thì mô-đun Python 0 có thể giúp bạn. Từ việc chạy các lệnh shell và các ứng dụng dòng lệnh đến khởi chạy các ứng dụng GUI, mô-đun 0 của Python có thể trợ giúp Show
Đến cuối hướng dẫn này, bạn sẽ có thể
Trong hướng dẫn này, bạn sẽ có kiến thức để hiểu các quy trình, quy trình con và Python trước khi bị mắc kẹt vào mô-đun 0 và. Sau đó, bạn sẽ bắt đầu khám phá shell và tìm hiểu cách bạn có thể tận dụng 0 của Python với shell và hệ thống. Cụ thể, bạn sẽ bao gồm, vàGhi chú. 0 không phải là mô-đun tự động hóa GUI hay cách để đạt được đồng thời. Để tự động hóa GUI, bạn có thể muốn xem PyAutoGUI. Đối với đồng thời, hãy xem phần hướng dẫn này trênKhi bạn đã có kiến thức cơ bản, bạn sẽ khám phá một số cách tận dụng 0 của Python. Bạn cũng sẽ nhúng ngón chân vào 0 của Python bằng cách thử nghiệm với hàm tạo 3 bên dướiMã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để làm quen với mô-đun Python 0Quy trình và quy trình conTrước hết, bạn có thể thắc mắc tại sao lại có một 5 trong tên mô-đun Python 0. Và chính xác thì một quá trình là gì? . Bạn sẽ có một mô hình tinh thần cấp cao để suy nghĩ về các quy trình. Nếu bạn đã quen thuộc với các quy trình, thì bạn có thể muốn bỏ qua trực tiếp đếnLoại bỏ các quảng cáoQuy trình và hệ điều hànhBất cứ khi nào bạn sử dụng máy tính, bạn sẽ luôn tương tác với các chương trình. Một quy trình là sự trừu tượng của hệ điều hành về một chương trình đang chạy. Vì vậy, sử dụng máy tính luôn liên quan đến các quá trình. Menu bắt đầu, thanh ứng dụng, trình thông dịch dòng lệnh, trình soạn thảo văn bản, trình duyệt, v.v.—mọi ứng dụng đều bao gồm một hoặc nhiều quy trình Một hệ điều hành điển hình sẽ báo cáo hàng trăm hoặc thậm chí hàng nghìn quy trình đang chạy mà bạn sẽ khám phá. Tuy nhiên, các đơn vị xử lý trung tâm (CPU) thường chỉ có một số ít lõi, điều đó có nghĩa là chúng chỉ có thể chạy một số lệnh đồng thời. Vì vậy, bạn có thể tự hỏi làm thế nào mà hàng ngàn quy trình có thể chạy cùng một lúc Tóm lại, hệ điều hành là một bộ đa nhiệm kỳ diệu—vì nó phải. CPU là bộ não của máy tính, nhưng nó hoạt động ở thang thời gian nano giây. Hầu hết các thành phần khác của máy tính đều chậm hơn nhiều so với CPU. Chẳng hạn, việc đọc đĩa cứng từ mất nhiều thời gian hơn hàng nghìn lần so với hoạt động của CPU thông thường Nếu một quá trình cần ghi một cái gì đó vào ổ cứng hoặc đợi phản hồi từ máy chủ từ xa, thì CPU sẽ không hoạt động trong hầu hết thời gian. Đa nhiệm khiến CPU luôn bận rộn Một phần khiến hệ điều hành trở nên tuyệt vời trong đa nhiệm là nó cũng được tổ chức tuyệt vời. Hệ điều hành theo dõi các quy trình trong bảng quy trình hoặc khối điều khiển quy trình. Trong bảng này, bạn sẽ tìm thấy ngữ cảnh bảo mật, tham chiếu đến không gian địa chỉ của quy trình, v.v. Bảng quy trình cho phép hệ điều hành từ bỏ một quy trình cụ thể theo ý muốn, bởi vì nó có tất cả thông tin cần thiết để quay lại và tiếp tục quy trình sau đó. Một tiến trình có thể bị gián đoạn hàng nghìn lần trong khi thực thi, nhưng hệ điều hành luôn tìm thấy chính xác điểm mà nó đã dừng lại khi quay lại Tuy nhiên, một hệ điều hành không khởi động với hàng ngàn quy trình. Nhiều quy trình mà bạn quen thuộc được bắt đầu bởi chính bạn. Trong phần tiếp theo, bạn sẽ xem xét thời gian tồn tại của một quy trình Quy trình trọn đờiHãy nghĩ về cách bạn có thể bắt đầu một ứng dụng Python từ dòng lệnh. Đây là một ví dụ về quy trình dòng lệnh của bạn khi bắt đầu quy trình Python Quá trình bắt đầu một quá trình khác được gọi là cha mẹ và quá trình mới được gọi là con. Các tiến trình cha và con hầu như chạy độc lập. Đôi khi đứa trẻ kế thừa các tài nguyên hoặc bối cảnh cụ thể từ cha mẹ Như bạn đã học trong phần , thông tin về các quy trình được lưu giữ trong một bảng. Mỗi quy trình theo dõi cha mẹ của nó, điều này cho phép hệ thống phân cấp quy trình được biểu diễn dưới dạng cây. Bạn sẽ khám phá cây quy trình của hệ thống trong Ghi chú. Cơ chế chính xác để tạo các quy trình khác nhau tùy thuộc vào hệ điều hành. Để có cái nhìn tổng quan ngắn gọn, bài viết trên Wikipedia về quản lý quy trình có một phần ngắn về Để biết thêm chi tiết về cơ chế Windows, hãy xem trang tài liệu API win32 về cách tạo quy trình Trên các hệ thống dựa trên UNIX, các quy trình thường được tạo bằng cách sử dụng 8 để sao chép quy trình hiện tại và sau đó thay thế quy trình con bằng một trong các hàm 9Mối quan hệ cha-con giữa một quy trình và quy trình con của nó không phải lúc nào cũng giống nhau. Đôi khi, hai quy trình sẽ chia sẻ các tài nguyên cụ thể, chẳng hạn như đầu vào và đầu ra, nhưng đôi khi chúng sẽ không. Đôi khi các tiến trình con tồn tại lâu hơn tiến trình cha. Một đứa trẻ sống lâu hơn cha mẹ có thể dẫn đến quá trình mồ côi hoặc thây ma, mặc dù thảo luận thêm về những điều đó nằm ngoài phạm vi của hướng dẫn này Khi một tiến trình chạy xong, nó thường sẽ kết thúc. Mỗi quá trình, khi thoát, sẽ trả về một số nguyên. Số nguyên này được gọi là mã trả về hoặc trạng thái thoát. Số không đồng nghĩa với thành công, trong khi bất kỳ giá trị nào khác được coi là thất bại. Các số nguyên khác nhau có thể được sử dụng để chỉ ra lý do tại sao một quá trình không thành công Cũng giống như cách bạn có thể trả về một giá trị từ một hàm trong Python, hệ điều hành mong đợi một giá trị trả về số nguyên từ một quy trình sau khi nó thoát. Đây là lý do tại sao hàm kinh điển C 0 thường trả về một số nguyên
Ví dụ này cho thấy số lượng mã C tối thiểu cần thiết để biên dịch tệp với 1 mà không có bất kỳ cảnh báo nào. Nó có hàm 0 trả về một số nguyên. Khi chương trình này chạy, hệ điều hành sẽ hiểu việc thực thi của nó là thành công vì nó trả về 0Vì vậy, những quy trình nào đang chạy trên hệ thống của bạn ngay bây giờ? . Có thể xem quy trình nào đang chạy và cách chúng được cấu trúc sẽ hữu ích khi trực quan hóa cách thức hoạt động của mô-đun 0Loại bỏ các quảng cáoCác quy trình đang hoạt động trên hệ thống của bạnBạn có thể tò mò muốn biết những quy trình nào đang chạy trên hệ thống của mình ngay bây giờ. Để làm được điều đó, bạn có thể sử dụng các tiện ích dành riêng cho nền tảng để theo dõi chúng Có nhiều công cụ có sẵn cho Windows, nhưng một công cụ dễ cài đặt, nhanh chóng và sẽ hiển thị cho bạn cây quy trình mà không cần nỗ lực nhiều là Process Hacker Bạn có thể cài đặt Process Hacker bằng cách truy cập trang tải xuống hoặc bằng Chocolatey
Mở ứng dụng và bạn sẽ thấy ngay cây quy trình Một trong những lệnh gốc mà bạn có thể sử dụng với PowerShell là 4, liệt kê các quy trình đang hoạt động trên dòng lệnh. 5 là một tiện ích nhắc lệnh thực hiện tương tựPhiên bản chính thức của Microsoft Process Hacker là một phần của các tiện ích Sysinternals, cụ thể là Process Monitor và Process Explorer. Bạn cũng nhận được PsList, một tiện ích dòng lệnh tương tự như 6 trên UNIX. Bạn có thể cài đặt Sysiternals bằng cách truy cập trang tải xuống hoặc bằng cách sử dụng Chocolatey
Bạn cũng có thể sử dụng Trình quản lý tác vụ cơ bản nhưng cổ điển hơn—có thể truy cập bằng cách nhấn Win +X and selecting the Task Manager. Đối với các hệ thống dựa trên UNIX, có nhiều tiện ích dòng lệnh để lựa chọn
Trên macOS, bạn cũng có ứng dụng Giám sát hoạt động trong các tiện ích của mình. Trong menu View, nếu bạn chọn All Processes, Hierarchally, bạn sẽ có thể xem cây quy trình của mình Bạn cũng có thể khám phá thư viện psutil của Python, cho phép bạn truy xuất thông tin quy trình đang chạy trên cả hệ thống dựa trên Windows và UNIX Một thuộc tính chung của theo dõi quy trình trên các hệ thống là mỗi quy trình có một số nhận dạng quy trình hoặc PID, là một số nguyên duy nhất để xác định quy trình trong ngữ cảnh của hệ điều hành. Bạn sẽ thấy con số này trên hầu hết các tiện ích được liệt kê ở trên Cùng với PID, thông thường sẽ thấy mức sử dụng tài nguyên, chẳng hạn như tỷ lệ phần trăm CPU và dung lượng RAM mà một quy trình cụ thể đang sử dụng. Đây là thông tin mà bạn tìm kiếm nếu một chương trình đang ăn cắp tất cả tài nguyên của bạn Việc sử dụng tài nguyên của các quy trình có thể hữu ích để phát triển hoặc gỡ lỗi các tập lệnh sử dụng mô-đun 0, ngay cả khi bạn không cần PID hoặc bất kỳ thông tin nào về tài nguyên mà các quy trình đang sử dụng trong chính mã đó. Trong khi chơi với các ví dụ sắp tới, hãy cân nhắc để mở một biểu diễn của cây quy trình để xem các quy trình mới bật lênBây giờ bạn có một cái nhìn toàn cảnh về các quy trình. Bạn sẽ đào sâu mô hình tinh thần của mình trong suốt hướng dẫn, nhưng bây giờ là lúc để xem cách bắt đầu quy trình của riêng bạn với mô-đun Python 0Tổng quan về Mô-đun $ python timer.py 5 0 của PythonMô-đun Python 0 dùng để khởi chạy các tiến trình con. Các quy trình này có thể là bất kỳ thứ gì từ ứng dụng GUI đến trình bao. Mối quan hệ cha-con của các quy trình là nơi phụ trong tên 0 đến từ. Khi bạn sử dụng 0, Python là cha tạo ra một tiến trình con mới. Quá trình con mới đó là gì, tùy thuộc vào bạnPython 0 ban đầu được đề xuất và chấp nhận cho Python 2. 4 thay thế cho việc sử dụng mô-đun 3. Một số thay đổi được ghi lại đã xảy ra muộn nhất là 3. 8. Các ví dụ trong bài viết này đã được thử nghiệm với Python 3. 10. 4, nhưng bạn chỉ cần 3. 8+ để làm theo hướng dẫn nàyHầu hết các tương tác của bạn với mô-đun Python 0 sẽ thông qua chức năng. Chức năng chặn này sẽ bắt đầu một quy trình và đợi cho đến khi quy trình mới thoát ra trước khi tiếp tụcKhuyến nghị sử dụng 5 cho tất cả các trường hợp mà nó có thể xử lý. Đối với các trường hợp cạnh mà bạn cần kiểm soát nhiều hơn, lớp có thể được sử dụng. 7 là lớp cơ bản cho toàn bộ mô-đun 0. Tất cả các chức năng trong mô-đun 0 là các trình bao bọc thuận tiện xung quanh hàm tạo 3 và các phương thức thể hiện của nó. Gần cuối hướng dẫn này, bạn sẽ thuộc lớp 7Ghi chú. Nếu bạn đang cố gắng quyết định xem mình có cần 0 hay không, hãy xem phần trênBạn có thể bắt gặp các chức năng khác như , và , nhưng những chức năng này thuộc về API 0 cũ hơn từ Python 3. 5 trở về trước. Mọi thứ ba chức năng này làm có thể được sao chép với chức năng 5 mới hơn. API cũ hơn chủ yếu vẫn còn đó để tương thích ngược và bạn sẽ không đề cập đến nó trong hướng dẫn nàyNgoài ra còn có một lượng dư thừa khá lớn trong mô-đun 0, nghĩa là có nhiều cách khác nhau để đạt được cùng một mục tiêu cuối cùng. Bạn sẽ không khám phá tất cả các biến thể trong hướng dẫn này. Tuy nhiên, những gì bạn sẽ tìm thấy là những kỹ thuật mạnh mẽ sẽ giúp bạn đi đúng hướngCách sử dụng cơ bản của Mô-đun $ python timer.py 5 0 PythonTrong phần này, bạn sẽ xem xét một số ví dụ cơ bản nhất minh họa việc sử dụng mô-đun 0. Bạn sẽ bắt đầu bằng cách khám phá một chương trình hẹn giờ dòng lệnh cơ bản với chức năng 5Nếu bạn muốn làm theo các ví dụ, hãy tạo một thư mục mới. Tất cả các ví dụ và chương trình có thể được lưu trong thư mục này. Điều hướng đến thư mục mới được tạo này trên dòng lệnh để chuẩn bị cho các ví dụ sắp tới. Tất cả mã trong hướng dẫn này là thư viện tiêu chuẩn Python—không yêu cầu phụ thuộc bên ngoài—vì vậy không cần môi trường ảo Loại bỏ các quảng cáoVí dụ về bộ đếm thời gianĐể nắm bắt được mô-đun 0 của Python, bạn sẽ muốn có một chương trình cơ bản để chạy và thử nghiệm với. Đối với điều này, bạn sẽ sử dụng một chương trình được viết bằng Python
Chương trình hẹn giờ sử dụng 15 để chấp nhận một số nguyên làm đối số. Số nguyên biểu thị số giây mà bộ hẹn giờ sẽ đợi cho đến khi thoát, mà chương trình sử dụng 16 để đạt được. Nó sẽ phát một hoạt ảnh nhỏ biểu thị từng giây trôi qua cho đến khi thoátNó không nhiều, nhưng điều quan trọng là nó hoạt động như một quy trình đa nền tảng chạy trong vài giây và bạn có thể dễ dàng sửa lại. Bạn sẽ gọi nó bằng 0 như thể nó là một tệp thực thi riêng biệtGhi chú. Việc gọi các chương trình Python bằng mô-đun Python 0 không có nhiều ý nghĩa—thường không cần các mô-đun Python khác ở trong các quy trình riêng biệt vì bạn chỉ có thể nhập chúngLý do chính mà bạn sẽ sử dụng các chương trình Python cho hầu hết các ví dụ trong hướng dẫn này là vì chúng đa nền tảng và rất có thể bạn đã cài đặt Python Bạn có thể muốn nghĩ rằng bắt đầu một quy trình mới có thể là một cách gọn gàng để đạt được đồng thời, nhưng đó không phải là trường hợp sử dụng dự định cho mô-đun 0. Có thể những gì bạn cần là các mô-đun Python khác dành riêng cho đồng thời, được trình bày trongMô-đun 0 chủ yếu để gọi các chương trình khác ngoài Python. Nhưng, như bạn có thể thấy, bạn cũng có thể gọi Python nếu muốn. Để thảo luận thêm về các trường hợp sử dụng của 0, hãy xem phần này được thảo luận sâu hơn ở đâu hoặc một trong những phần sauĐược rồi, sẵn sàng để bị mắc kẹt trong. Khi bạn đã sẵn sàng chương trình 22, hãy mở một phiên tương tác Python và gọi bộ đếm thời gian bằng 0>>>
Với mã này, bạn sẽ thấy hoạt ảnh phát ngay trong REPL. Bạn đã nhập 0 và sau đó gọi hàm 5 với một danh sách các chuỗi là đối số duy nhất. Đây là tham số 26 của hàm 5Khi thực thi 5, quy trình hẹn giờ bắt đầu và bạn có thể thấy đầu ra của nó trong thời gian thực. Sau khi hoàn thành, nó trả về một thể hiện của lớpTrên dòng lệnh, bạn có thể đã quen với việc khởi động chương trình bằng một chuỗi
Tuy nhiên, với 5, bạn cần truyền lệnh theo trình tự, như trong ví dụ về 5. Mỗi mục trong chuỗi đại diện cho một mục được sử dụng cho lệnh gọi hệ thống để bắt đầu một quy trình mớiGhi chú. Gọi 5 không giống như gọi các chương trình trên dòng lệnh. Hàm 5 thực hiện lệnh gọi hệ thống, không cần trình bao. Bạn sẽ đề cập đến tương tác với trình bao sauCác trình bao thường thực hiện mã thông báo của riêng chúng, đó là lý do tại sao bạn chỉ cần viết các lệnh dưới dạng một chuỗi dài trên dòng lệnh. Tuy nhiên, với mô-đun 0 của Python, bạn phải chia nhỏ lệnh thành các mã thông báo theo cách thủ công. Chẳng hạn, tên thực thi, cờ và đối số sẽ là một mã thông báoGhi chú. Bạn có thể sử dụng mô-đun 35 để trợ giúp nếu cần, lưu ý rằng mô-đun này được thiết kế cho các hệ thống và có thể không hoạt động tốt trong môi trường Windows>>>
Hàm 36 chia một lệnh điển hình thành các mã thông báo khác nhau cần thiết. Mô-đun 35 có thể hữu ích khi không rõ cách phân chia các lệnh phức tạp hơn có các ký tự đặc biệt, như dấu cách>>>
Bạn sẽ lưu ý rằng thư chứa khoảng trắng được giữ nguyên dưới dạng một mã thông báo và không cần thêm dấu ngoặc kép nữa. Các dấu ngoặc kép bổ sung trên vỏ dùng để nhóm mã thông báo lại với nhau, nhưng vì 0 sử dụng các chuỗi, nên phần nào nên được hiểu là một mã thông báo luôn rõ ràngBây giờ bạn đã quen thuộc với một số kiến thức cơ bản về bắt đầu các quy trình mới với mô-đun 0 của Python, sắp tới bạn sẽ thấy rằng bạn có thể chạy bất kỳ loại quy trình nào, không chỉ Python hoặc các chương trình dựa trên văn bảnViệc sử dụng $ python timer.py 5 0 để chạy bất kỳ ứng dụng nàoVới 0, bạn không bị giới hạn trong các ứng dụng dựa trên văn bản như shell. Bạn có thể gọi bất kỳ ứng dụng nào bạn có thể bằng menu Bắt đầu hoặc thanh ứng dụng, miễn là bạn biết tên hoặc đường dẫn chính xác của chương trình mà bạn muốn chạy>>>
>>>
Tùy thuộc vào bản phân phối Linux của bạn, bạn có thể có một trình soạn thảo văn bản khác, chẳng hạn như 42, 43, 44 hoặc 45>>> 0Các lệnh này sẽ mở ra một cửa sổ soạn thảo văn bản. Thông thường, 29 sẽ không được trả lại cho đến khi bạn đóng cửa sổ soạn thảo. Tuy nhiên, trong trường hợp của macOS, vì bạn cần chạy quy trình trình khởi chạy 47 để khởi chạy TextEdit, nên 29 sẽ được trả về ngay lập tứcCác quy trình của trình khởi chạy chịu trách nhiệm khởi chạy một quy trình cụ thể và sau đó kết thúc. Đôi khi các chương trình, chẳng hạn như trình duyệt web, được tích hợp sẵn. Cơ chế của các quy trình trình khởi chạy nằm ngoài phạm vi của hướng dẫn này, nhưng đủ để nói rằng chúng có thể điều khiển cây quy trình của hệ điều hành để gán lại các mối quan hệ cha-con Ghi chú. Có nhiều vấn đề mà ban đầu bạn có thể cần tới 0 để giải quyết, nhưng sau đó bạn sẽ tìm thấy một mô-đun hoặc thư viện cụ thể giải quyết vấn đề đó cho bạn. Đây có xu hướng là một chủ đề với 0 vì nó là một tiện ích cấp thấpMột ví dụ về điều mà bạn có thể muốn làm với 0 là mở trình duyệt web đến một trang cụ thể. Tuy nhiên, đối với điều đó, có lẽ tốt nhất là sử dụng mô-đun Python 52. Mô-đun 52 sử dụng 0 nhưng xử lý tất cả các khác biệt phức tạp giữa các nền tảng và trình duyệt mà bạn có thể gặp phảiSau đó, một lần nữa, 0 có thể là một công cụ cực kỳ hữu ích để hoàn thành công việc một cách nhanh chóng. Nếu bạn không cần một thư viện chính thức, thì 0 có thể là con dao quân đội Thụy Sĩ của bạn. Tất cả phụ thuộc vào trường hợp sử dụng của bạn. Nhiều cuộc thảo luận về chủ đề này sẽ đếnBạn đã bắt đầu thành công các quy trình mới bằng Python. Đó là 0 ở mức cơ bản nhất. Tiếp theo, bạn sẽ xem xét kỹ hơn đối tượng 29 được trả về từ 5Đối tượng PS> choco install processhacker 29Khi bạn sử dụng 5, giá trị trả về là một thể hiện của lớp 29. Đúng như tên gọi, 5 chỉ trả về đối tượng sau khi tiến trình con kết thúc. Nó có nhiều thuộc tính khác nhau có thể hữu ích, chẳng hạn như 26 đã được sử dụng cho quy trình và 65Để thấy rõ điều này, bạn có thể gán kết quả của 5 cho một biến, sau đó truy cập các thuộc tính của nó, chẳng hạn như 67>>> 1Quá trình này có một mã trả về cho biết lỗi, nhưng nó không đưa ra một ngoại lệ. Thông thường, khi một quy trình 0 không thành công, bạn sẽ luôn muốn đưa ra một ngoại lệ, điều này bạn có thể thực hiện bằng cách chuyển vào một đối số 69>>> 2Có nhiều cách khác nhau để đối phó với sự cố, một số trong số đó sẽ được đề cập trong phần tiếp theo. Điểm quan trọng cần lưu ý bây giờ là 5 sẽ không nhất thiết đưa ra ngoại lệ nếu quy trình không thành công trừ khi bạn đã thông qua đối số 69 29 cũng có một vài thuộc tính liên quan đến đầu vào/đầu ra (I/O), bạn sẽ đề cập chi tiết hơn trong phần này. Tuy nhiên, trước khi giao tiếp với các quy trình, bạn sẽ học cách xử lý lỗi khi viết mã với 0$ python timer.py 5 0 Ngoại lệNhư bạn đã thấy trước đó, ngay cả khi một quy trình thoát với mã trả về biểu thị lỗi, Python sẽ không đưa ra ngoại lệ. Đối với hầu hết các trường hợp sử dụng của mô-đun 0, điều này không lý tưởng. Nếu một quy trình không thành công, bạn thường sẽ muốn xử lý nó bằng cách nào đó chứ không chỉ tiếp tụcRất nhiều trường hợp sử dụng 0 liên quan đến các kịch bản cá nhân ngắn mà bạn có thể không dành nhiều thời gian cho hoặc ít nhất là không nên dành nhiều thời gian cho. Nếu bạn đang mày mò viết một kịch bản như thế này, thì bạn sẽ muốn 0 thất bại sớm và ầm ĩPS> choco install processhacker 78 cho Mã Thoát Khác KhôngNếu một quy trình trả về mã thoát khác không, bạn nên hiểu đó là một quy trình không thành công. Trái ngược với những gì bạn có thể mong đợi, mô-đun 0 của Python không tự động đưa ra một ngoại lệ đối với mã thoát khác không. Một quy trình bị lỗi thường không phải là thứ mà bạn muốn chương trình của mình âm thầm bỏ qua, vì vậy bạn có thể chuyển một đối số 69 cho 5 để đưa ra một ngoại lệ>>> 2 78 được nâng lên ngay khi quy trình con chạy vào mã trả về khác không. Nếu bạn đang phát triển một kịch bản cá nhân ngắn, thì có lẽ điều này là đủ tốt cho bạn. Nếu bạn muốn xử lý lỗi khéo léo hơn, hãy đọc tiếp phần trênMột điều cần lưu ý là 78 không áp dụng cho các quy trình có thể bị treo và chặn quá trình thực thi của bạn vô thời hạn. Để đề phòng điều đó, bạn muốn tận dụng tham số 84PS> choco install processhacker 85 cho các quy trình mất quá nhiều thời gianĐôi khi các quy trình không hoạt động tốt và chúng có thể mất quá nhiều thời gian hoặc bị treo vô thời hạn. Để xử lý những tình huống đó, bạn nên sử dụng tham số 84 của hàm 5Truyền đối số 88 cho 5 sẽ khiến hàm tắt quy trình và gây ra lỗi 85 sau một giây>>> 4Trong ví dụ này, dấu chấm đầu tiên của hoạt ảnh hẹn giờ đã được xuất, nhưng quy trình con đã bị tắt trước khi có thể hoàn thành Loại lỗi khác có thể xảy ra là nếu chương trình không tồn tại trên hệ thống cụ thể đó, điều này làm phát sinh một loại lỗi cuối cùng Loại bỏ các quảng cáoPS> choco install processhacker 91 cho các chương trình không tồn tạiLoại ngoại lệ cuối cùng mà bạn sẽ xem xét là 91, loại ngoại lệ này sẽ xuất hiện nếu bạn thử và gọi một chương trình không tồn tại trên hệ thống đích>>> 5Loại lỗi này được nêu ra bất kể là gì, vì vậy bạn không cần phải đưa ra bất kỳ đối số nào cho 91Đó là những ngoại lệ chính mà bạn sẽ gặp phải khi sử dụng mô-đun 0 của Python. Đối với nhiều trường hợp sử dụng, biết các ngoại lệ và đảm bảo rằng bạn sử dụng các đối số 84 và 96 là đủ. Đó là bởi vì nếu quy trình con không thành công, thì điều đó thường có nghĩa là tập lệnh của bạn không thành côngTuy nhiên, nếu bạn có một chương trình phức tạp hơn, thì bạn có thể muốn xử lý lỗi một cách khéo léo hơn. Chẳng hạn, bạn có thể cần gọi nhiều tiến trình trong một khoảng thời gian dài. Đối với điều này, bạn có thể sử dụng cấu trúc Một ví dụ về xử lý ngoại lệĐây là đoạn mã hiển thị các ngoại lệ chính mà bạn sẽ muốn xử lý khi sử dụng 0 6Đoạn mã này cho bạn thấy một ví dụ về cách bạn có thể xử lý ba trường hợp ngoại lệ chính do mô-đun 0 đưa raBây giờ bạn đã sử dụng 0 ở dạng cơ bản và xử lý một số trường hợp ngoại lệ, đã đến lúc làm quen với những gì cần thiết để tương tác với trình baoGiới thiệu về Shell và các chương trình dựa trên văn bản với $ python timer.py 5 0Một số trường hợp sử dụng phổ biến nhất của mô-đun 0 là để tương tác với các chương trình dựa trên văn bản, thường có sẵn trên trình bao. Đó là lý do tại sao trong phần này, bạn sẽ bắt đầu khám phá tất cả các bộ phận chuyển động có liên quan khi tương tác với các chương trình dựa trên văn bản và có thể đặt câu hỏi liệu bạn có cần shell hay không.Shell thường đồng nghĩa với giao diện dòng lệnh hoặc CLI, nhưng thuật ngữ này không hoàn toàn chính xác. Thực tế, có hai quy trình riêng biệt tạo nên trải nghiệm dòng lệnh điển hình
Khi ở trên dòng lệnh, người ta thường nghĩ rằng bạn đang tương tác trực tiếp với trình bao, nhưng bạn thực sự đang tương tác với giao diện. Giao diện đảm nhiệm việc gửi các lệnh của bạn tới trình bao và hiển thị kết quả đầu ra của trình bao lại cho bạn Với sự khác biệt quan trọng này trong tâm trí, đã đến lúc chuyển sự chú ý của bạn sang những gì 5 đang thực sự làm. Người ta thường nghĩ rằng việc gọi 5 bằng cách nào đó cũng giống như gõ một lệnh trong giao diện đầu cuối, nhưng có những điểm khác biệt quan trọngMặc dù tất cả các quy trình mới được tạo với cùng một cuộc gọi hệ thống, ngữ cảnh mà cuộc gọi hệ thống được thực hiện là khác nhau. Hàm 5 có thể thực hiện cuộc gọi hệ thống trực tiếp và không cần thông qua trình bao để thực hiện việc nàyTrên thực tế, nhiều chương trình được coi là chương trình shell, chẳng hạn như Git, thực sự chỉ là các chương trình dựa trên văn bản không cần shell để chạy. Điều này đặc biệt đúng với môi trường UNIX, nơi tất cả các tiện ích quen thuộc như 3, 08, 09 và 10 thực sự là các tệp thực thi riêng biệt có thể được gọi trực tiếp.>>> 7Tuy nhiên, có một số công cụ dành riêng cho trình bao. Việc tìm kiếm các công cụ được nhúng trong trình bao phổ biến hơn nhiều trên các trình bao Windows như PowerShell, trong đó các lệnh như 3 là một phần của chính trình bao chứ không phải các tệp thực thi riêng biệt như trong môi trường UNIX>>> 8Trong PowerShell, 3 là bí danh mặc định cho 13, nhưng cách gọi đó cũng không hoạt động vì 13 không phải là tệp thực thi riêng biệt—nó là một phần của chính PowerShellThực tế là nhiều chương trình dựa trên văn bản có thể hoạt động độc lập với trình bao có thể khiến bạn tự hỏi liệu bạn có thể loại bỏ quy trình trung gian hay không—cụ thể là trình bao—và sử dụng trực tiếp 0 với các chương trình dựa trên văn bản thường được kết hợp với trình baoLoại bỏ các quảng cáoCác trường hợp sử dụng cho Shell và $ python timer.py 5 0Có một số lý do phổ biến khiến bạn có thể muốn gọi trình bao bằng mô-đun quy trình con 17
Đây không phải là một danh sách đầy đủ Bạn có thể sử dụng trình bao để ngắt chương trình hoặc để thực hiện một số thao tác xử lý văn bản. Tuy nhiên, cú pháp có thể rất khó hiểu khi so sánh với Python. Với Python, quy trình xử lý văn bản dễ viết hơn, dễ bảo trì hơn, hiệu suất cao hơn và đa nền tảng để khởi động. Vì vậy, nó rất đáng để xem xét việc không có vỏ Tuy nhiên, điều thường xảy ra là bạn không có thời gian hoặc không đáng để nỗ lực triển khai lại các tập lệnh shell hiện có trong Python. Trong những trường hợp đó, sử dụng 0 cho một số Python cẩu thả không phải là điều xấuNhững lý do phổ biến để sử dụng bản thân 0 cũng tương tự như việc sử dụng shell với 0
Ghi chú. Hộp đen có thể là một chương trình có thể được sử dụng miễn phí nhưng không có mã nguồn, vì vậy không có cách nào để biết chính xác nó làm gì và không có cách nào để sửa đổi phần bên trong của nó Tương tự, hộp trắng có thể là chương trình có sẵn mã nguồn nhưng không thay đổi được. Nó cũng có thể là một chương trình có mã nguồn mà bạn có thể thay đổi, nhưng độ phức tạp của nó có nghĩa là bạn sẽ mất nhiều thời gian để hiểu nó để có thể thay đổi nó. Trong những trường hợp này, bạn có thể sử dụng 0 để bọc các hộp có độ mờ khác nhau, bỏ qua mọi nhu cầu thay đổi hoặc triển khai lại mọi thứ trong PythonThường thì bạn sẽ thấy rằng đối với 0 trường hợp sử dụng, sẽ có một thư viện dành riêng cho nhiệm vụ đó. Ở phần sau của hướng dẫn, bạn sẽ kiểm tra một môi trường ảo hoàn chỉnh và một kho lưu trữ Git được khởi tạo đầy đủ. Tuy nhiên, các thư viện Cookiecutter và Copier đã tồn tại cho mục đích đóMặc dù các thư viện cụ thể có thể thực hiện nhiệm vụ của bạn, nhưng vẫn có thể đáng để thực hiện với 0. Thứ nhất, bạn có thể thực hiện những gì bạn đã biết cách làm nhanh hơn nhiều so với việc học một thư viện mớiNgoài ra, nếu bạn đang chia sẻ tập lệnh này với bạn bè hoặc đồng nghiệp, sẽ rất thuận tiện nếu tập lệnh của bạn hoàn toàn là Python mà không có bất kỳ phần phụ thuộc nào khác, đặc biệt nếu tập lệnh của bạn cần hoạt động trên các môi trường tối thiểu như máy chủ hoặc hệ thống nhúng Tuy nhiên, nếu bạn đang sử dụng 0 thay vì 25 để đọc và ghi một số tệp bằng Bash, bạn có thể cân nhắc học cách đọc và viết bằng Python. Học cách đọc và ghi tệp không mất nhiều thời gian và nó chắc chắn sẽ xứng đáng với một nhiệm vụ thông thường như vậyNgoài ra, đã đến lúc làm quen với môi trường shell trên cả hệ thống dựa trên Windows và UNIX Cách sử dụng cơ bản của $ python timer.py 5 0 với Shell dựa trên UNIXĐể chạy lệnh shell bằng cách sử dụng 5, 26 phải chứa shell mà bạn muốn sử dụng, cờ để cho biết rằng bạn muốn nó chạy một lệnh cụ thể và lệnh mà bạn đang chuyển vào>>> 9Ở đây một lệnh shell phổ biến được trình bày. Nó sử dụng 3 dẫn vào 09 để lọc một số mục nhập. Shell tiện dụng cho loại hoạt động này vì bạn có thể tận dụng lợi thế của người vận hành đường ống ( 31). Bạn sẽ bao gồm các đường ống chi tiết hơnBạn có thể thay thế 32 bằng vỏ bạn chọn. Cờ 33 là viết tắt của command, nhưng có thể khác tùy thuộc vào shell mà bạn đang sử dụng. Điều này gần như chính xác tương đương với những gì xảy ra khi bạn thêm đối số 34>>> 0Đối số 34 sử dụng ngầm 36, vì vậy nó gần như tương đương với ví dụ trướcGhi chú. Trên các hệ thống dựa trên UNIX, trình bao 37 theo truyền thống là trình bao Bourne. Điều đó nói rằng, trình bao Bourne hiện đã khá cũ, vì vậy nhiều hệ điều hành sử dụng 37 làm liên kết đến Bash hoặcĐiều này thường có thể khác với trình bao được sử dụng với giao diện đầu cuối mà bạn tương tác. Ví dụ: kể từ macOS Catalina, trình bao mặc định mà bạn sẽ tìm thấy trên ứng dụng dòng lệnh đã thay đổi từ Bash thành Zsh, nhưng 37 thường vẫn trỏ đến Bash. Tương tự như vậy, trên Ubuntu, 37 trỏ đến Dash, nhưng mặc định mà bạn thường tương tác trên ứng dụng dòng lệnh vẫn là BashVì vậy, việc gọi 37 trên hệ thống của bạn có thể dẫn đến một hệ vỏ khác với những gì được tìm thấy trong hướng dẫn này. Tuy nhiên, tất cả các ví dụ vẫn hoạt độngBạn sẽ lưu ý rằng mã thông báo sau 42 phải là một mã thông báo duy nhất, bao gồm tất cả các khoảng trắng. Ở đây bạn đang trao quyền điều khiển cho trình bao để phân tích cú pháp lệnh. Nếu bạn bao gồm nhiều mã thông báo hơn, điều này sẽ được hiểu là có nhiều tùy chọn hơn để chuyển sang trình bao có thể thực thi được, chứ không phải là các lệnh bổ sung để chạy bên trong trình baoLoại bỏ các quảng cáoCách sử dụng cơ bản của $ python timer.py 5 0 Với Windows ShellTrong phần này, bạn sẽ đề cập đến cách sử dụng cơ bản shell với 0 trong môi trường WindowsĐể chạy lệnh shell bằng cách sử dụng 5, 26 phải chứa shell mà bạn muốn sử dụng, cờ để cho biết rằng bạn muốn nó chạy một lệnh cụ thể và lệnh mà bạn đang chuyển vào>>> 1Lưu ý rằng cả 47 và 48 đều hoạt động. Nếu bạn không có PowerShell Core, thì bạn có thể gọi 49 hoặc 50Bạn sẽ lưu ý rằng mã thông báo sau 51 phải là một mã thông báo duy nhất, bao gồm tất cả các khoảng trắng. Ở đây bạn đang trao quyền điều khiển cho trình bao để phân tích cú pháp lệnh. Nếu bạn bao gồm nhiều mã thông báo hơn, điều này sẽ được hiểu là có nhiều tùy chọn hơn để chuyển sang trình bao có thể thực thi được, chứ không phải là các lệnh bổ sung để chạy bên trong trình baoNếu bạn cần Dấu nhắc Lệnh, thì tệp thực thi là 52 hoặc 53 và cờ để chỉ ra rằng mã thông báo sau đây là lệnh là 54>>> 2Ví dụ cuối cùng này chính xác tương đương với việc gọi 5 với 34. Nói cách khác, sử dụng đối số 34 giống như thêm 58 và 59 vào danh sách đối số của bạnGhi chú. Quá trình phát triển của Windows rất khác so với quá trình phát triển của các hệ thống dựa trên UNIX. Shell được biết đến rộng rãi nhất là Windows Command Prompt, hiện là Shell kế thừa. Dấu nhắc lệnh được tạo để mô phỏng môi trường MS-DOS trước Windows. Nhiều shell script, hoặc hàng loạt 60 script, được viết cho môi trường này vẫn còn được sử dụng cho đến ngày nayHàm 5 với tham số 62 hầu như sẽ luôn kết thúc bằng Dấu nhắc Lệnh. Mô-đun 0 sử dụng biến môi trường Windows 64, mà trong hầu hết các trường hợp sẽ trỏ đến 53, Dấu nhắc Lệnh. Hiện tại, có rất nhiều chương trình tương đương với 64 với 53 nên việc thay đổi chương trình sẽ gây ra nhiều sự cố ở những nơi không mong muốn. Vì vậy, thay đổi 64 thường không được khuyến khíchTại thời điểm này, bạn nên biết về một vấn đề bảo mật quan trọng mà bạn sẽ muốn biết nếu bạn có các phần tử hướng tới người dùng trong chương trình Python của mình, bất kể hệ điều hành là gì. Đó là một lỗ hổng không chỉ giới hạn ở 0. Hơn nữa, nó có thể được khai thác trong nhiều lĩnh vực khác nhauCảnh báo bảo mậtNếu tại bất kỳ thời điểm nào bạn dự định lấy đầu vào của người dùng và bằng cách nào đó dịch nó thành lệnh gọi tới 0, thì bạn phải hết sức cẩn thận trước các cuộc tấn công tiêm nhiễm. Đó là, tính đến các tác nhân độc hại tiềm ẩn. Có nhiều cách để gây ra sự tàn phá nếu bạn cứ để mọi người chạy mã trên máy của mìnhĐể sử dụng một ví dụ rất đơn giản, nơi bạn lấy đầu vào của người dùng và gửi nó, chưa được lọc, tới quy trình con để chạy trên trình bao 3 4Bạn có thể tưởng tượng trường hợp sử dụng dự định là bọc 3 và thêm thứ gì đó vào nó. Vì vậy, hành vi dự kiến của người dùng là cung cấp một đường dẫn như 72. Tuy nhiên, nếu một tác nhân độc hại nhận ra điều gì đang xảy ra, họ có thể thực thi hầu hết mọi mã mà họ muốn. Lấy ví dụ sau đây, nhưng hãy cẩn thận với điều này73 74 Một lần nữa, hãy cẩn thận. Những dòng trông ngây thơ này có thể thử và xóa mọi thứ trên hệ thống. Trong trường hợp này, phần độc hại nằm trong dấu ngoặc kép nên nó sẽ không chạy, nhưng nếu không có dấu ngoặc kép thì bạn sẽ gặp rắc rối. Phần quan trọng thực hiện điều này là lệnh gọi tới 08 với các cờ có liên quan để xóa đệ quy tất cả các tệp, thư mục và thư mục con và nó sẽ hoạt động để buộc xóa thông qua. Nó có thể chạy 76 và có khả năng là 08 dưới dạng các lệnh hoàn toàn riêng biệt bằng cách thêm dấu chấm phẩy, đóng vai trò là dấu phân cách lệnh cho phép nhiều dòng mã thường chạy trên một dòngViệc chạy các lệnh độc hại này sẽ gây ra thiệt hại không thể khắc phục đối với hệ thống tệp và sẽ yêu cầu cài đặt lại hệ điều hành. Cẩn thận May mắn thay, hệ điều hành sẽ không cho phép bạn làm điều này với một số tệp đặc biệt quan trọng. Lệnh 08 sẽ cần sử dụng 79 trong các hệ thống dựa trên UNIX hoặc được chạy với tư cách quản trị viên trong Windows để hoàn toàn thành công trong tình trạng lộn xộn của nó. Tuy nhiên, lệnh có thể sẽ xóa rất nhiều nội dung quan trọng trước khi dừngVì vậy, hãy đảm bảo rằng nếu bạn đang xây dựng động các đầu vào của người dùng để cung cấp cho một cuộc gọi 0, thì bạn phải hết sức cẩn thận. Với cảnh báo đó, sắp tới bạn sẽ đề cập đến việc sử dụng kết quả đầu ra của các lệnh và xâu chuỗi các lệnh lại với nhau—nói ngắn gọn là cách giao tiếp với các quy trình sau khi chúng bắt đầuLoại bỏ các quảng cáoGiao tiếp với các quy trìnhBạn đã sử dụng mô-đun 0 để thực thi các chương trình và gửi các lệnh cơ bản tới trình bao. Nhưng một cái gì đó quan trọng vẫn còn thiếu. Đối với nhiều tác vụ mà bạn có thể muốn sử dụng 0, bạn có thể muốn tự động gửi đầu vào hoặc sử dụng đầu ra trong mã Python của mình sauĐể giao tiếp với quy trình của bạn, trước tiên bạn nên hiểu một chút về cách các quy trình giao tiếp nói chung, sau đó bạn sẽ xem xét hai ví dụ để hiểu rõ các khái niệm Luồng I/O tiêu chuẩnMột luồng ở mức cơ bản nhất đại diện cho một chuỗi các phần tử không có sẵn cùng một lúc. Khi bạn đọc các ký tự và dòng từ một tệp, bạn đang làm việc với một luồng ở dạng một đối tượng tệp, đối tượng cơ bản nhất của nó là một. Bộ mô tả tệp thường được sử dụng cho luồng. Vì vậy, không có gì lạ khi thấy các thuật ngữ luồng, tệp và giống như tệp được sử dụng thay thế cho nhau Khi các quy trình được khởi tạo, có ba luồng đặc biệt mà một quy trình sử dụng. Một quá trình làm như sau
Đây là các luồng tiêu chuẩn—một mẫu đa nền tảng để giao tiếp theo quy trình Đôi khi tiến trình con kế thừa các luồng này từ tiến trình cha. Đây là những gì đang xảy ra khi bạn sử dụng 86 trong REPL và có thể thấy đầu ra của lệnh. 84 của trình thông dịch Python được kế thừa bởi quy trình conKhi bạn đang ở trong môi trường REPL, bạn đang xem quy trình giao diện dòng lệnh, hoàn chỉnh với ba luồng I/O tiêu chuẩn. Giao diện có quy trình shell là quy trình con, bản thân nó có Python REPL khi còn nhỏ. Trong tình huống này, trừ khi bạn chỉ định khác, 83 sẽ xuất phát từ bàn phím, trong khi 84 và 85 được hiển thị trên màn hình. Giao diện, trình bao và REPL chia sẻ các luồngBạn có thể coi các luồng I/O tiêu chuẩn là bộ phân phối byte. Quy trình con điền vào 84 và 85, và bạn điền vào 83. Sau đó, bạn đọc các byte trong 84 và 85, và quy trình con đọc từ 83Như với một bộ phân phối, bạn có thể dự trữ 83 trước khi nó được liên kết với một quy trình con. Quá trình con sau đó sẽ đọc từ 83 khi và khi nó cần. Tuy nhiên, khi một quá trình đã đọc từ một luồng, các byte sẽ được phân phối. Bạn không thể quay lại và đọc lại chúngBa luồng hoặc tệp này là cơ sở để giao tiếp với quy trình của bạn. Trong phần tiếp theo, bạn sẽ bắt đầu thấy điều này hoạt động bằng cách lấy đầu ra của chương trình tạo số ma thuật Ví dụ về trình tạo số ma thuậtThông thường, khi sử dụng mô-đun 0, bạn sẽ muốn sử dụng đầu ra cho một thứ gì đó chứ không chỉ hiển thị đầu ra như bạn vẫn làm từ trước đến nay. Trong phần này, bạn sẽ sử dụng một trình tạo số ma thuật để xuất ra một số ma thuật.Hãy tưởng tượng rằng trình tạo số ma thuật là một chương trình tối nghĩa nào đó, một hộp đen, được kế thừa qua nhiều thế hệ quản trị viên hệ thống trong công việc của bạn. Nó đưa ra một con số kỳ diệu mà bạn cần cho các phép tính bí mật của mình. Bạn sẽ đọc từ 84 của 0 và sử dụng nó trong chương trình Python bao bọc của bạn 5Được rồi, không thực sự quá kỳ diệu. Điều đó nói rằng, đó không phải là trình tạo số ma thuật mà bạn quan tâm—nó đang tương tác với một hộp đen giả định với 0, điều đó thật thú vị. Để lấy đầu ra của trình tạo số để sử dụng sau này, bạn có thể chuyển đối số 03 thành 5>>> 6Truyền một đối số 05 của 06 đến 5 làm cho đầu ra của quy trình có sẵn tại thuộc tính 08 của đối tượng quy trình đã hoàn thành. Bạn sẽ lưu ý rằng nó được trả về dưới dạng , vì vậy bạn cần lưu ý khi đọc nóCũng lưu ý rằng thuộc tính 08 của 29 không còn là luồng nữa. Luồng đã được đọc và nó được lưu trữ dưới dạng đối tượng byte trong thuộc tính 08Với đầu ra có sẵn, bạn có thể sử dụng nhiều hơn một quy trình con để lấy các giá trị và thao tác trên chúng trong mã của mình >>> 7Trong ví dụ này, bạn bắt đầu hai quy trình số ma thuật lấy hai số ma thuật rồi cộng chúng lại với nhau. Hiện tại, bạn dựa vào việc giải mã tự động đối tượng byte bằng hàm tạo 12. Tuy nhiên, trong phần tiếp theo, bạn sẽ học cách giải mã và mã hóa rõ ràngLoại bỏ các quảng cáoGiải mã các luồng tiêu chuẩnCác quy trình giao tiếp theo byte và bạn có một vài cách khác nhau để xử lý việc mã hóa và giải mã các byte này. Bên dưới bề mặt, 0 có một vài cách để vàoChế độ văn bản có nghĩa là 0 sẽ cố gắng tự mã hóa. Để làm điều đó, nó cần biết mã hóa ký tự nào sẽ sử dụng. Hầu hết các tùy chọn để thực hiện việc này trong 0 sẽ cố gắng sử dụng mã hóa mặc định. Tuy nhiên, bạn thường ngăn chặn một lỗi khó tìm thấy trong tương laiBạn có thể chuyển một đối số 16 để Python xử lý việc mã hóa bằng cách sử dụng mã hóa mặc định. Tuy nhiên, như đã đề cập, việc chỉ định mã hóa một cách rõ ràng bằng cách sử dụng đối số 17 luôn an toàn hơn, vì không phải tất cả các hệ thống đều hoạt động với UTF-8 gần như phổ biến>>> 8Nếu ở chế độ văn bản, thuộc tính 08 trên 29 hiện là một chuỗi chứ không phải đối tượng byteBạn cũng có thể giải mã các byte được trả về bằng cách gọi trực tiếp phương thức 20 trên thuộc tính 84 mà hoàn toàn không yêu cầu chế độ văn bản>>> 9Có nhiều cách khác để đưa 5 vào chế độ văn bản. Bạn cũng có thể đặt giá trị 06 cho 24 hoặc 25, điều này cũng sẽ đặt 5 ở chế độ văn bản. Điều này có vẻ dư thừa, nhưng phần lớn trong số này được giữ lại để tương thích ngược, vì mô-đun 0 đã thay đổi qua nhiều nămBây giờ bạn đã biết cách đọc và giải mã đầu ra của một quy trình, đã đến lúc xem xét việc ghi vào đầu vào của một quy trình Ví dụ về trò chơi phản ứngTrong phần này, bạn sẽ sử dụng 0 để tương tác với trò chơi dòng lệnh. Đó là một chương trình cơ bản được thiết kế để kiểm tra thời gian phản ứng của con người. Tuy nhiên, với kiến thức của bạn về các luồng I/O tiêu chuẩn, bạn sẽ có thể hack nó. Mã nguồn của trò chơi sử dụng mô-đun 29 và 30 0Chương trình bắt đầu, yêu cầu người dùng nhấn enter, sau một khoảng thời gian ngẫu nhiên sẽ yêu cầu người dùng nhấn enter lần nữa. Nó tính từ lúc thông báo xuất hiện cho đến khi người dùng nhấn enter, hoặc ít nhất đó là suy nghĩ của nhà phát triển game Hàm 31 sẽ đọc từ 83 cho đến khi xuống một dòng mới, có nghĩa là một lần nhấn phím Enter trong ngữ cảnh này. Nó trả về mọi thứ nó tiêu thụ từ 83 ngoại trừ dòng mới. Với kiến thức đó, bạn có thể sử dụng 0 để tương tác với trò chơi này. >>> 1Thời gian phản ứng là 0 mili giây. Không tệ. Xem xét thời gian phản ứng trung bình của con người là khoảng 270 mili giây, chương trình của bạn chắc chắn là siêu phàm. Lưu ý rằng trò chơi làm tròn đầu ra của nó, vì vậy 0 mili giây không có nghĩa là nó diễn ra tức thời Đối số 35 được chuyển đến 5 là một chuỗi bao gồm hai dòng mới. Tham số 17 được đặt thành 38, đặt 5 ở chế độ văn bản. Điều này thiết lập quy trình để nó nhận thông tin đầu vào mà bạn cung cấp cho nóTrước khi chương trình bắt đầu, 83 được lưu trữ, chờ chương trình sử dụng các dòng mới mà nó chứa. Một dòng mới được sử dụng để bắt đầu trò chơi và dòng mới tiếp theo được sử dụng để phản ứng với 41Bây giờ bạn đã biết chuyện gì đang xảy ra—cụ thể là có thể dự trữ 83 như trước đây—bạn có thể tự hack chương trình mà không cần 0. Nếu bạn bắt đầu trò chơi và sau đó nhấn Enter một vài lần, trò chơi đó sẽ tích trữ 83 với một số dòng mới mà chương trình sẽ tự động sử dụng sau khi nhận được . Vì vậy, thời gian phản ứng của bạn thực sự chỉ là thời gian cần thiết để trò chơi phản ứng thực hiện 46 và sử dụng thông tin đầu vào. Tuy nhiên, nhà phát triển trò chơi đã khôn ngoan với điều này và thề sẽ phát hành một phiên bản khác, phiên bản này sẽ bảo vệ chống lại việc khai thác này. Trong thời gian chờ đợi, bạn sẽ tìm hiểu sâu hơn một chút về 0 và tìm hiểu về cách nó kết nối các luồng I/O tiêu chuẩnLoại bỏ các quảng cáoĐường ống và ShellĐể thực sự hiểu các quy trình con và chuyển hướng luồng, bạn thực sự cần hiểu các đường ống và chúng là gì. This is especially true if you want to wire up two processes together, feeding one 84 into another process’s 83, for instance. In this section, you’ll be coming to grips with pipes and how to use them with the 0 moduleIntroduction to PipesA pipe, or pipeline, is a special stream that, instead of having one file handle as most files do, has two. One handle is read-only, and the other is write-only. The name is very descriptive—a pipe serves to pipe a byte stream from one process to another. It’s also buffered, so a process can write to it, and it’ll hold onto those bytes until it’s read, like a dispenser You may be used to seeing pipes on the command line, as you did in the 2This command tells the shell to create an 3 process to list all the files in 52. The pipe operator ( 31) tells the shell to create a pipe from the 84 of the 3 process and feed it into the 83 of the 09 process. The 09 process filters out all the lines that don’t contain the string 59Windows doesn’t have 09, but a rough equivalent of the same command would be as follows 3However, on Windows PowerShell, things work very differently. As you learned in the of this tutorial, the different commands are not separate executables. Therefore, PowerShell is internally redirecting the output of one command into another without starting new processes Note. If you don’t have access to a UNIX-based operating system but have Windows 10 or above, then you actually do have access to a UNIX-based operating system. Check out Windows Subsystem for Linux, which will give you access to a fully featured Linux shell You can use pipes for different processes on PowerShell, though getting into the intricacies of which ones is outside the scope of this tutorial. For more information on PowerShell pipes, check out the documentation. So, for the rest of the pipe examples, only UNIX-based examples will be used, as the basic mechanism is the same for both systems. They’re not nearly as common on Windows, anyway If you want to let the shell take care of piping processes into one another, then you can just pass the whole string as a command into 0>>> 4This way, you can let your chosen shell take care of piping one process into another, instead of trying to reimplement things in Python. This is a perfectly valid choice in certain situations , you’ll also come to see that you can’t pipe processes directly with 5. For that, you’ll need the more complicated 3. Actual piping is demonstrated in , near the end of the tutorialWhether you mean to pipe one process into another with the 0 module or not, the 0 module makes extensive use of pipes behind the scenesThe Pipes of $ python timer.py 5 0The Python 0 module uses pipes extensively to interact with the processes that it starts. In a previous example, you used the 05 parameter to be able to access 84>>> 6 03 is equivalent to explicitly setting the 84 and 85 parameters to the 73 constant>>> 6The 74 constant is nothing special. It’s just a number that indicates to 0 that a pipe should be created. The function then creates a pipe to link up to the 84 of the subprocess, which the function then reads into the 29 object’s 84 attribute. By the time it’s a 29, it’s no longer a pipe, but a bytes object that can be accessed multiple timesNote. Pipe buffers have a limited capacity. Depending on the system you are running on, you may easily run into that limit if you plan on holding large quantities of data in the buffer. To work around this limit, you can use normal files You can also pass a to any of the standard stream parameters >>> 7You can’t pass a bytes object or a string directly to the 83 argument, though. Nó cần phải là một cái gì đó giống như tập tinLưu ý rằng 81 được trả về đầu tiên là từ lệnh gọi trả về vị trí luồng mới, trong trường hợp này là bắt đầu luồngTham số 35 tương tự như tham số 05 ở chỗ nó là một phím tắt. Sử dụng tham số 35 sẽ tạo bộ đệm để lưu trữ nội dung của 35, sau đó liên kết tệp với quy trình mới để đóng vai trò là 83 của nóĐể thực sự liên kết hai quy trình với một đường ống từ bên trong 0 là điều mà bạn không thể làm với 5. Thay vào đó, bạn có thể ủy thác hệ thống ống nước cho trình bao, như bạn đã làm trước đó trong phầnNếu bạn cần liên kết các quy trình khác nhau mà không ủy thác bất kỳ công việc nào cho trình bao, thì bạn. Bạn sẽ bao gồm 3 sau. Tuy nhiên, trong phần tiếp theo, bạn sẽ mô phỏng một đường ống có 5 vì trong hầu hết các trường hợp, việc các quy trình được liên kết trực tiếp với nhau là không quan trọngMô phỏng đường ống với >>> subprocess.run(["gedit"]) CompletedProcess(args=['gedit'], returncode=0) 5Mặc dù bạn không thể thực sự liên kết hai quy trình cùng với một đường ống bằng cách sử dụng hàm 5, nhưng ít nhất là không ủy thác nó cho trình bao, bạn có thể mô phỏng đường ống bằng cách sử dụng hợp lý thuộc tính 84Nếu bạn đang sử dụng hệ thống dựa trên UNIX, nơi hầu hết tất cả các lệnh trình bao điển hình đều là các tệp thực thi riêng biệt, thì bạn chỉ cần đặt ____60_______35 của quy trình thứ hai thành thuộc tính ____60_______08 của _______29 đầu tiên >>> 8Ở đây, thuộc tính 08 của đối tượng 29 của 3 được đặt thành 35 của 04. Điều quan trọng là nó được đặt thành 35 thay vì 83. Điều này là do thuộc tính 08 không phải là một đối tượng giống như tệp. Đó là một đối tượng byte, vì vậy nó không thể được sử dụng làm đối số cho 83Thay vào đó, bạn cũng có thể thao tác trực tiếp với các tệp, đặt chúng thành các tham số luồng tiêu chuẩn. Khi sử dụng tệp, bạn đặt đối tượng tệp làm đối số thành 83, thay vì sử dụng tham số 35>>> 9Như bạn đã tìm hiểu trong phần trước, đối với Windows PowerShell, thực hiện điều gì đó như thế này hoàn toàn không có ý nghĩa gì vì hầu hết thời gian, các tiện ích này là một phần của chính PowerShell. Bởi vì bạn không xử lý các tệp thực thi riêng biệt, đường ống trở nên ít cần thiết hơn. Tuy nhiên, mô hình cho đường ống vẫn giống nhau nếu cần phải làm điều gì đó như thế này Với hầu hết các công cụ hiện có, giờ là lúc nghĩ về một số ứng dụng thực tế cho 0ý tưởng thiết thựcKhi bạn gặp vấn đề muốn giải quyết bằng Python, đôi khi mô-đun 0 là cách dễ nhất, mặc dù nó có thể không đúng nhấtViệc sử dụng 0 thường rất khó để hoạt động trên các nền tảng khác nhau và nó vốn có. Nhưng mặc dù nó có thể liên quan đến một số Python cẩu thả, nhưng việc sử dụng 0 có thể là một cách rất nhanh chóng và hiệu quả để giải quyết vấn đềNhư đã đề cập, đối với hầu hết các nhiệm vụ bạn có thể tưởng tượng thực hiện với 0, thường có một thư viện dành riêng cho nhiệm vụ cụ thể đó. Thư viện gần như chắc chắn sẽ sử dụng 0 và các nhà phát triển sẽ làm việc chăm chỉ để làm cho mã đáng tin cậy và giải quyết tất cả các trường hợp góc cạnh có thể khiến việc sử dụng 0 trở nên khó khănVì vậy, mặc dù có tồn tại các thư viện chuyên dụng, nhưng việc chỉ sử dụng 0 thường có thể đơn giản hơn, đặc biệt nếu bạn đang ở trong một môi trường mà bạn cần hạn chế các phụ thuộc của mìnhTrong các phần sau, bạn sẽ khám phá một vài ý tưởng thiết thực Tạo một dự án mới. Một ví dụGiả sử bạn thường cần tạo các dự án cục bộ mới, mỗi dự án hoàn chỉnh với một môi trường ảo và được khởi tạo dưới dạng kho lưu trữ Git. Bạn có thể truy cập thư viện Cookiecutter dành riêng cho nhiệm vụ đó và đó sẽ là một ý tưởng tồi Tuy nhiên, sử dụng Cookiecutter có nghĩa là học Cookiecutter. Hãy tưởng tượng bạn không có nhiều thời gian và dù sao thì môi trường của bạn cũng cực kỳ tối giản—tất cả những gì bạn thực sự có thể tin tưởng là Git và Python. Trong những trường hợp này, 0 có thể nhanh chóng thiết lập dự án cho bạn 0Đây là một công cụ dòng lệnh mà bạn có thể gọi để bắt đầu một dự án. Nó sẽ đảm nhiệm việc tạo tệp 20 và tệp 21, sau đó nó sẽ chạy một số lệnh để tạo môi trường ảo, khởi tạo kho lưu trữ git và thực hiện cam kết đầu tiên của bạn. Nó thậm chí còn đa nền tảng, chọn sử dụng 25 để tạo các tệp và thư mục, giúp loại bỏ sự khác biệt của hệ điều hànhĐiều này có thể được thực hiện với Cookiecutter? . Nhưng nếu bạn chỉ cần một cái gì đó nhanh và bẩn, sử dụng các lệnh mà bạn đã biết, thì chỉ cần sử dụng 0 có thể là một lựa chọn tuyệt vờiThay đổi thuộc tính mở rộngDùng Dropbox có thể bạn chưa biết có cách bỏ qua file khi đồng bộ. Ví dụ: bạn có thể giữ môi trường ảo trong thư mục dự án của mình và sử dụng Dropbox để đồng bộ hóa mã nhưng giữ môi trường ảo cục bộ Điều đó nói rằng, nó không dễ dàng như việc thêm một tệp 26. Thay vào đó, nó liên quan đến việc thêm các thuộc tính đặc biệt vào tệp, có thể được thực hiện từ dòng lệnh. Các thuộc tính này khác nhau giữa các hệ thống giống UNIX và Windows 1 2 3Có một số dự án dựa trên UNIX, chẳng hạn như dropboxignore, sử dụng các tập lệnh shell để giúp bỏ qua các tệp và thư mục dễ dàng hơn. Mã tương đối phức tạp và không hoạt động trên Windows Với mô-đun 0, bạn có thể bọc các lệnh shell khác nhau khá dễ dàng để tạo ra tiện ích của riêng mình 4Đây là đoạn trích đơn giản hóa từ kho lưu trữ dotDropboxIgnore của tác giả. Hàm 28 phát hiện hệ điều hành bằng mô-đun 29 và trả về một đối tượng là một phần trừu tượng xung quanh hệ vỏ dành riêng cho hệ thống. Mã này chưa triển khai hành vi trên macOS, vì vậy mã sẽ tăng 30 nếu phát hiện mã đó đang chạy trên macOSĐối tượng shell cho phép bạn gọi một phương thức 31 với danh sách các đối tượng 25 để đặt Dropbox bỏ qua các tệp đóTrên lớp 34, hàm tạo kiểm tra xem PowerShell Core có khả dụng hay không và nếu không, sẽ quay trở lại Windows PowerShell cũ hơn, được cài đặt theo mặc định trên Windows 10Trong phần tiếp theo, bạn sẽ xem lại một số mô-đun khác có thể thú vị cần lưu ý khi quyết định có nên sử dụng 0Các mô-đun Python được liên kết với $ python timer.py 5 0Khi quyết định xem một nhiệm vụ nhất định có phù hợp với 0 hay không, có một số mô-đun liên quan mà bạn có thể muốn biếtTrước khi có 0, bạn có thể sử dụng 39 để chạy các lệnh. Tuy nhiên, cũng như nhiều thứ mà trước đây 3 được sử dụng, các mô-đun thư viện tiêu chuẩn đã thay thế cho 3, vì vậy nó chủ yếu được sử dụng nội bộ. Hầu như không có bất kỳ trường hợp sử dụng nào để tự mình sử dụng 3Có một nơi mà bạn có thể kiểm tra một số cách cũ để hoàn thành nhiệm vụ với 3 và tìm hiểu cách bạn có thể làm điều tương tự với 0Có thể sẽ hấp dẫn khi nghĩ rằng ___________0 có thể được sử dụng đồng thời và trong các trường hợp đơn giản, nó có thể được. Nhưng, phù hợp với triết lý cẩu thả của Python, có lẽ sẽ chỉ nhanh chóng hack một cái gì đó cùng nhau. Nếu bạn muốn thứ gì đó mạnh mẽ hơn, thì có lẽ bạn sẽ muốn bắt đầu xem xét mô-đun 46Tùy thuộc vào nhiệm vụ mà bạn đang cố gắng thực hiện, bạn có thể hoàn thành nhiệm vụ đó với các mô-đun 47 hoặc 48. Nếu mọi thứ được viết bằng Python, thì các mô-đun này có thể là lựa chọn tốt nhất của bạnMô-đun 47 cũng có API cấp cao để tạo và quản lý các quy trình con, vì vậy nếu bạn muốn kiểm soát nhiều hơn đối với các quy trình song song không phải Python, thì đó có thể là một quy trình cần kiểm traBây giờ là lúc đi sâu vào 0 và khám phá lớp 7 bên dưới và hàm tạo của nóLớp học >>> subprocess.run(["gedit"]) CompletedProcess(args=['gedit'], returncode=0) 7Như đã đề cập, lớp cơ sở cho toàn bộ mô-đun 0 là lớp 7 và hàm tạo 3. Mỗi chức năng trong 0 gọi hàm tạo 3 dưới mui xe. Sử dụng hàm tạo 3 cho bạn nhiều quyền kiểm soát đối với các quy trình con mới bắt đầuNhư một bản tóm tắt nhanh, về cơ bản, 5 là phương thức khởi tạo của lớp 3, một số thiết lập và sau đó là lệnh gọi phương thức trên đối tượng 7 mới được khởi tạo. Phương thức 61 là một phương thức chặn trả về dữ liệu 84 và 85 sau khi quá trình kết thúcTên của 7 xuất phát từ một lệnh UNIX tương tự viết tắt của pipe open. Lệnh tạo một đường ống và sau đó bắt đầu một quy trình mới gọi trình bao. Tuy nhiên, mô-đun 0 không tự động gọi trình baoHàm 5 là một hàm chặn, có nghĩa là không thể tương tác động với một quy trình với nó. Tuy nhiên, hàm tạo 3 bắt đầu một quy trình mới và tiếp tục, khiến quy trình chạy song songNhà phát triển trò chơi phản ứng mà bạn đã hack trước đó đã phát hành phiên bản mới của trò chơi của họ, phiên bản mà bạn không thể gian lận bằng cách tải 83 bằng dòng mới 5Lúc này chương trình sẽ hiển thị một ký tự ngẫu nhiên, bạn cần bấm chính xác ký tự đó để trò chơi ghi lại thời gian phản ứng của bạn Phải làm gì? Sử dụng >>> import shlex >>> shlex.split("python timer.py 5") ['python', 'timer.py', '5'] >>> subprocess.run(shlex.split("python timer.py 5")) Starting timer of 5 seconds .....Done! CompletedProcess(args=['python', 'timer.py', '5'], returncode=0) 3Việc sử dụng hàm tạo 3 rất giống với việc sử dụng hàm tạo 5. Nếu có một đối số mà bạn có thể chuyển tới 5, thì bạn thường có thể chuyển nó tới 3. Sự khác biệt cơ bản là nó không phải là một cuộc gọi chặn—thay vì đợi cho đến khi quá trình kết thúc, nó sẽ chạy quá trình song song. Vì vậy, bạn cần tính đến bản chất không chặn này nếu bạn muốn đọc đầu ra của quy trình mới 6Chương trình này gọi quy trình hẹn giờ trong trình quản lý bối cảnh và gán 84 cho một đường ống. Sau đó, nó chạy phương thức trên đối tượng 7 và đọc 84 của nóPhương pháp 78 là một phương pháp cơ bản để kiểm tra xem một tiến trình có còn đang chạy hay không. Nếu đúng như vậy, thì 78 trả về 83. Nếu không, nó sẽ trả về mã thoát của quy trìnhSau đó, chương trình sử dụng để thử và đọc bao nhiêu byte có sẵn tại 08Ghi chú. Nếu bạn đặt đối tượng 7 ở chế độ văn bản và sau đó gọi 87 trên 08, cuộc gọi tới 87 sẽ bị chặn cho đến khi nó xuống một dòng mới. Trong trường hợp này, một dòng mới sẽ trùng với thời điểm kết thúc chương trình hẹn giờ. Hành vi này không được mong muốn trong tình huống nàyĐể đọc bao nhiêu byte có sẵn tại thời điểm đó, bỏ qua các dòng mới, bạn cần đọc với 84. Điều quan trọng cần lưu ý là 84 chỉ khả dụng trên các luồng byte, vì vậy bạn cần đảm bảo xử lý mã hóa theo cách thủ công và không sử dụng chế độ văn bảnĐầu ra của chương trình này in đầu tiên 83 vì quá trình này chưa kết thúc. Chương trình sau đó in những gì có sẵn trong 84 cho đến nay, đó là thông báo bắt đầu và ký tự đầu tiên của hoạt ảnhSau ba giây, bộ đếm thời gian vẫn chưa kết thúc, vì vậy bạn lại nhận được 83, cùng với hai nhân vật hoạt hình khác. Sau ba giây nữa, quá trình đã kết thúc, vì vậy 78 tạo ra 81 và bạn nhận được các ký tự cuối cùng của hoạt ảnh và 97 7Trong ví dụ này, bạn đã thấy hàm tạo 3 hoạt động rất khác so với hàm tạo 5. Trong hầu hết các trường hợp, bạn không cần loại kiểm soát chi tiết này. Điều đó nói lên rằng, trong các phần tiếp theo, bạn sẽ thấy cách bạn có thể ghép nối quy trình này với quy trình khác và cách bạn có thể hack trò chơi phản ứng mớiKết nối hai quy trình với nhau bằng đường ốngNhư đã đề cập trong a, nếu bạn cần kết nối các quy trình với nhau bằng đường ống, bạn cần sử dụng hàm tạo 3. Điều này chủ yếu là do 5 là một lệnh gọi chặn, vì vậy khi quá trình tiếp theo bắt đầu, quá trình đầu tiên đã kết thúc, nghĩa là bạn không thể liên kết trực tiếp tới 84 của nóQuy trình này sẽ chỉ được trình bày cho các hệ thống UNIX, vì đường ống trong Windows ít phổ biến hơn nhiều, như đã đề cập trong phần 8Trong ví dụ này, hai quá trình được bắt đầu song song. Chúng được nối với nhau bằng một đường ống chung và vòng lặp 03 đảm nhận việc đọc đường ống tại 84 để xuất ra các dòngMột điểm quan trọng cần lưu ý là trái ngược với 5, trả về một đối tượng 29, hàm tạo 3 trả về một đối tượng 7. Các thuộc tính luồng tiêu chuẩn của một 29 trỏ tới các đối tượng hoặc chuỗi byte, nhưng các thuộc tính tương tự của một đối tượng 7 trỏ tới các luồng thực tế. Điều này cho phép bạn giao tiếp với các quy trình khi chúng đang chạyTuy nhiên, việc bạn có thực sự cần nối các quy trình với nhau hay không lại là một vấn đề khác. Hãy tự hỏi bản thân xem có mất nhiều thứ không bằng cách dàn xếp quy trình với Python và chỉ sử dụng 5. Tuy nhiên, có một số tình huống mà bạn thực sự cần 7, chẳng hạn như hack phiên bản mới của trò chơi thời gian phản ứngTương tác động với một quy trìnhBây giờ bạn đã biết mình có thể sử dụng 3 để tương tác động với một quy trình khi nó chạy, đã đến lúc chuyển kiến thức đó sang khai thác lại trò chơi thời gian phản ứng 9Với tập lệnh này, bạn đang kiểm soát hoàn toàn việc lưu vào bộ đệm của một quy trình, đó là lý do tại sao bạn chuyển các đối số như 14 cho quy trình Python và 15 thành 16. Các đối số này là để đảm bảo rằng không có quá trình đệm bổ sung nào đang diễn raTập lệnh hoạt động bằng cách sử dụng một hàm sẽ tìm kiếm một trong danh sách các chuỗi bằng cách lấy từng ký tự một từ 84 của quy trình. Khi mỗi ký tự đi qua, tập lệnh sẽ tìm kiếm chuỗiGhi chú. Để làm cho điều này hoạt động trên cả hệ thống dựa trên Windows và UNIX, hai chuỗi được tìm kiếm. hoặc là 18 hoặc là 19. Dấu xuống dòng kiểu Windows cùng với dòng mới điển hình là bắt buộc trên các hệ thống WindowsSau khi tập lệnh đã tìm thấy một trong các chuỗi mục tiêu, trong trường hợp này là chuỗi ký tự trước ký tự mục tiêu, sau đó, tập lệnh sẽ lấy ký tự tiếp theo và viết ký tự đó vào _______83 của quy trình, sau đó là một dòng mới Với tốc độ một phần nghìn giây, nó không hoàn toàn tốt như bản hack gốc, nhưng nó vẫn rất siêu phàm. Làm tốt Bỏ tất cả niềm vui này sang một bên, việc tương tác với các quy trình bằng cách sử dụng 7 có thể rất phức tạp và dễ mắc lỗi. Trước tiên, hãy xem liệu bạn có thể sử dụng riêng 5 hay không trước khi sử dụng hàm tạo 3Nếu bạn thực sự cần tương tác với các quy trình ở cấp độ này, mô-đun 47 có API cấp cao để tạo và quản lý các quy trình conChức năng quy trình con 47 dành cho các ứng dụng phức tạp hơn của 0 khi bạn có thể cần sắp xếp các quy trình khác nhau. Đây có thể là trường hợp nếu bạn đang thực hiện xử lý phức tạp nhiều tệp hình ảnh, video hoặc âm thanh chẳng hạn. Nếu bạn đang sử dụng 0 ở cấp độ này, thì có lẽ bạn đang xây dựng một thư việnPhần kết luậnBạn đã hoàn thành hành trình đến với mô-đun 0 của Python. Bây giờ bạn sẽ có thể quyết định liệu 0 có phù hợp với vấn đề của bạn hay không. Bạn cũng có thể quyết định xem bạn có cần gọi trình bao hay không. Ngoài ra, bạn sẽ có thể chạy các quy trình con và tương tác với đầu vào và đầu ra của chúngBạn cũng có thể bắt đầu khám phá các khả năng thao tác quy trình với hàm tạo 3Trên đường đi, bạn đã
Bây giờ bạn đã sẵn sàng đưa nhiều tệp thực thi vào phạm vi ảnh hưởng Pythonic của mình Mã nguồn. Nhấp vào đây để tải xuống mã nguồn miễn phí mà bạn sẽ sử dụng để làm quen với mô-đun Python 0Đánh dấu là đã hoàn thành 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Ian Currie Ian là một mọt sách Python, người sử dụng nó cho mọi thứ, từ mày mò đến giúp mọi người và công ty quản lý công việc hàng ngày cũng như phát triển doanh nghiệp của họ » Thông tin thêm về IanMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Bartosz Geir Arne Jim kate Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Các lệnh khác nhau trong python là gì?Một số lệnh Python phổ biến là các lệnh nhập, in, phạm vi, làm tròn, cài đặt pip, len, sắp xếp, lặp như for và while so .
Lệnh nào được sử dụng để xuất văn bản từ cả trình bao python và trong mô-đun python?print() là lệnh bạn đang tìm kiếm. Hàm print(), câu lệnh in chính thức trong Python 2. 0, có thể được sử dụng để xuất văn bản từ cả vỏ python và trong mô-đun python.
Mô-đun lệnh trong python là gì?Mô-đun lệnh chứa các chức năng tiện ích để làm việc với đầu ra lệnh shell trong Unix . có sẵn trong. 1. 4. Cảnh báo. Mô-đun này đã lỗi thời bởi mô-đun quy trình con.
Lệnh python 3 là gì?Các lệnh Python 3 đã được giới thiệu với các tính năng của Python 2 và nó tương thích với python 2 nhờ sự trợ giúp của việc sử dụng một số từ khóa có sẵn để hỗ trợ các chức năng. Python 3 command was released in the year 2008. Python 3 is more intuitive to programmers and more precise while providing the result. |