Hướng dẫn how do i run a command line command in a python script? - làm cách nào để chạy lệnh dòng lệnh trong tập lệnh python?
Hình ảnh từ Wikimedia Commons
Show
22 tháng 4 năm 2019 Mục lục
Python là một ngôn ngữ tuyệt vời để viết kịch bản và tự động hóa quy trình công việc và nó được đóng gói với các công cụ hữu ích trong hộp với thư viện tiêu chuẩn Python. Một điều phổ biến cần làm, đặc biệt là đối với một sysadmin, là thực thi các lệnh shell. Nhưng những gì thường sẽ kết thúc trong một tệp bash hoặc hàng loạt, cũng có thể được thực hiện trong Python. Bạn sẽ học ở đây làm thế nào để làm điều đó với các mô -đun OS và quy trình con. Sử dụng mô -đun import os stream = os.popen('echo Returned output') output = stream.read() output 1Cách tiếp cận đầu tiên và thẳng nhất để chạy lệnh shell là bằng cách sử dụng os.system ():
Nếu bạn lưu điều này dưới dạng tập lệnh và chạy nó, bạn sẽ thấy đầu ra trong dòng lệnh. Vấn đề với phương pháp này là không thể linh hoạt vì bạn thậm chí có thể nhận được đầu ra kết quả là một biến. Bạn có thể đọc thêm về chức năng này trong tài liệu. Lưu ý rằng, nếu bạn chạy chức năng này trong Notebook Jupyter, bạn đã giành được một đầu ra. Thay vào đó, bạn, đầu ra nội tuyến sẽ là mã trả lại của chương trình thực hiện ( 2 để thành công và 3 cho không thành công). Bạn sẽ tìm thấy đầu ra trong dòng lệnh nơi bạn đã bắt đầu Jupyter Notebook.Tiếp theo, lệnh os.popen () mở một đường ống từ hoặc đến dòng lệnh. Điều này có nghĩa là chúng ta có thể truy cập luồng trong Python. Điều này rất hữu ích vì bây giờ bạn có thể nhận được đầu ra như một biến:
Khi bạn sử dụng hàm 4, bạn sẽ nhận được toàn bộ đầu ra dưới dạng một chuỗi. Bạn cũng có thể sử dụng hàm 5, phân tách từng dòng (bao gồm cả dấu vết 6). Lưu ý rằng bạn chỉ có thể chạy chúng một lần. Cũng có thể ghi vào luồng bằng cách sử dụng đối số 7. Để đi sâu hơn vào chức năng này, hãy xem tài liệu.Trong ví dụ này và trong các ví dụ sau, bạn sẽ thấy rằng bạn luôn có các đường mòn theo dõi trong đầu ra. Để loại bỏ chúng (bao gồm các khoảng trống và tab trống ở đầu và kết thúc), bạn có thể sử dụng chức năng 8 như với 9. Để loại bỏ các ký tự đó chỉ khi sử dụng 0 và cho cuối 1.Sử dụng mô -đun import subprocess process = subprocess.Popen(['echo', 'More output'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() stdout, stderr 2Cách tiếp cận cuối cùng cũng là cách tiếp cận linh hoạt nhất và mô -đun được đề xuất để chạy các lệnh bên ngoài trong Python:
Chức năng chính bạn muốn ghi nhớ nếu bạn sử dụng Python> = 3.5 là quy trình phụ. Lớp Subprocess.popen () chịu trách nhiệm tạo và quản lý quy trình thực hiện. Trái ngược với các chức năng trước đó, lớp này chỉ thực thi một lệnh duy nhất với các đối số như một danh sách. Điều này có nghĩa là bạn đã thắng được các lệnh:
Bạn có thể nhận thấy rằng chúng tôi đặt 4 và 5 thành quy trình con.pipe. Đây là một giá trị đặc biệt chỉ ra 6 rằng một đường ống nên được mở mà sau đó bạn có thể đọc với hàm 7. Cũng có thể sử dụng một đối tượng tệp như với:
Một điều khác mà bạn sẽ nhận thấy là đầu ra thuộc loại byte. Bạn có thể giải quyết điều đó bằng cách nhập 8 hoặc bằng cách thêm 9 khi gọi 6.Khi bạn chạy 7, nó sẽ đợi cho đến khi quá trình hoàn tất. Tuy nhiên, nếu bạn có một chương trình dài mà bạn muốn chạy và bạn muốn liên tục kiểm tra trạng thái trong thời gian thực trong khi làm việc khác, bạn có thể làm điều này như ở đây:
Bạn có thể sử dụng chức năng 2 để kiểm tra mã trả lại của quy trình. Nó sẽ trả lại 3 trong khi quá trình vẫn đang chạy. Để có được đầu ra, bạn có thể sử dụng 4 để đọc một dòng. Ngược lại, khi bạn sử dụng 5, nó sẽ đọc tất cả các dòng và nó cũng chờ quá trình hoàn thành nếu nó chưa kết thúc. Để biết thêm thông tin về chức năng của 6, hãy xem tài liệu.Cũng lưu ý rằng bạn đã giành được các trích dẫn cần cho các đối số với không gian ở giữa 7. Nếu bạn không chắc chắn làm thế nào để mã hóa các đối số từ lệnh, bạn có thể sử dụng hàm shlex.split ():
Bạn cũng có hàm SubProcess.call () theo ý của bạn hoạt động như lớp 8, nhưng nó chờ cho đến khi lệnh hoàn thành và cung cấp cho bạn mã trả lại như trong 9. Tuy nhiên, cách được đề xuất là sử dụng quy trình con.run () hoạt động kể từ Python 3.5. Nó đã được thêm vào như một sự đơn giản hóa của 6. Chức năng sẽ trả về một đối tượng SubProcess.completedProcess:
Bây giờ bạn có thể tìm thấy đầu ra kết quả trong biến này: Tương tự như 1 và hàm 7 trước đó, nó sẽ chờ đợi quá trình được hoàn thành. Cuối cùng, đây là một ví dụ nâng cao hơn về cách truy cập máy chủ với mô -đun SSH và ____22: 0Ở đây bạn có thể thấy cách viết đầu vào cho quy trình. Trong trường hợp này, bạn cần đặt 4 để có đầu ra không bị truy cập. Sau khi bạn viết xong cho 5, bạn cần đóng kết nối.Sự kết luậnBây giờ bạn đã thấy làm thế nào để chạy các lệnh bên ngoài trong Python. Cách hiệu quả nhất là sử dụng mô -đun 2 với tất cả các chức năng mà nó cung cấp. Đáng chú ý nhất, bạn nên xem xét sử dụng 7. Đối với một tập lệnh ngắn và nhanh, bạn có thể chỉ muốn sử dụng các hàm 8 hoặc 9. Nếu bạn có bất kỳ câu hỏi nào, hãy thoải mái để chúng trong các ý kiến dưới đây. Ngoài ra còn có các thư viện hữu ích khác hỗ trợ các lệnh shell trong Python, như Plumbum, SH, psutils và pexpect.Tài nguyên
Làm thế nào để bạn cung cấp cho một tập lệnh Python một dòng lệnh đầu vào?Nếu vậy, bạn sẽ cần sử dụng lệnh input (). Lệnh Input () cho phép bạn yêu cầu người dùng nhập chuỗi hoặc số trong khi chương trình đang chạy. Phương thức đầu vào () đã thay thế phương thức Raw_Input () cũ tồn tại trong Python v2. Mở một thiết bị đầu cuối và chạy lệnh Python để truy cập Python.use the input() command. The input() command allows you to require a user to enter a string or number while a program is running. The input() method replaced the old raw_input() method that existed in Python v2. Open a terminal and run the python command to access Python.
Làm cách nào để chuyển một đối số dòng lệnh cho tập lệnh Python?Trong Python, các đối số được chuyển đến một tập lệnh từ dòng lệnh bằng gói SYS.Thành viên Argv của SYS (SYS. ARGV) sẽ lưu trữ tất cả các thông tin trong mục nhập dòng lệnh và có thể được truy cập bên trong tập lệnh Python.Mô -đun GetOpt của Python cũng có thể được sử dụng để phân tích các đối số được đặt tên.using the sys package. The argv member of sys ( sys. argv ) will store all the information in the command line entry and can be accessed inside the Python script. Python's getopt module can also be used to parse named arguments.
Làm thế nào để bạn gọi dòng lệnh python shell?Để chạy shell python, hãy mở dấu nhắc lệnh hoặc shell nguồn trên cửa sổ Windows và thiết bị đầu cuối trên Mac, viết Python và nhấn Enter.Một dấu nhắc Python bao gồm ba biểu tượng lớn hơn >>> xuất hiện, như được hiển thị bên dưới.Bây giờ, bạn có thể nhập một câu lệnh duy nhất và nhận kết quả.open the command prompt or power shell on Windows and terminal window on mac, write python and press enter. A Python Prompt comprising of three greater-than symbols >>> appears, as shown below. Now, you can enter a single statement and get the result.
Làm thế nào để bạn viết một tập lệnh Python và chạy nó bằng dấu nhắc lệnh?Cách cơ bản và dễ dàng nhất để chạy tập lệnh Python là bằng cách sử dụng lệnh Python.Bạn cần mở một dòng lệnh và nhập từ python theo sau là đường dẫn đến tệp tập lệnh của bạn, như thế này: Python first_script.py Hello World!Sau đó, bạn nhấn nút Enter từ bàn phím và đó là nó.open a command line and type the word python followed by the path to your script file, like this: python first_script.py Hello World! Then you hit the ENTER button from the keyboard and that's it. |