Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Giao diện Python đến Shell Pipelines (Đường ống Shell)

Để sử dụng cơ chế đường ống (pipeline) lệnh UNIX bằng Python. Trong pipeline lệnh, một chuỗi chuyển đổi từ file này sang file khác.

Module này dùng dòng lệnh /bin/sh. Vì vậy ta cần các phương thức os.system() và os.popen().

Để dùng module này, nên nhập bằng:

import pipes

Module pipes chứa lớp Template:

Lớp pipes.Template

Lớp này về cơ bản là sự trừu tượng hóa của một pipeline. Nó có các phương thức khác nhau như sau.

Phương thức Template.reset()

Khôi phục template pipeline về vị trí ban đầu.

Phương thức Template.clone()

Tạo một đối tượng template mới, giống hệt nhau.

Phương thức Template.debug(flag)

Gỡ lỗi (debug) quy trình. Khi flag là true, chế độ debug bật. Khi bật, các lệnh sẽ được in ra trong quá trình thực thi.

Phương thức Template.append(command, kind)

Chèn một tác vụ mới vào cuối. Command phải là lệnh bourne shell. Biến kind gồm hai ký tự.

Ký tự đầu tiên nghĩa là:

STTKý tự & Mô tả
1‘–‘ – Lệnh đọc Standard Input
2‘f’ – Lệnh đọc file cho trước trên dòng lệnh
3‘.’ – Lệnh không đọc đầu vào nào. Sẽ ở vị trí đầu tiên.

Ký tự thứ hai nghĩa là:

STTKý tự & Mô tả
1‘–‘ – Lệnh ghi ra Standard Output
2‘f’ – Lệnh ghi file trên dòng lệnh
3‘.’ – Lệnh không ghi đầu ra nào. Sẽ ở vị trí cuối cùng.

Phương thức Template.prepend(command, kind)

Chèn tác vụ mới vào đầu. Command phải là lệnh bourne shell. Tương tự append().

Phương thức Template.open(file, mode)

Mở file để đọc hoặc ghi. Nhưng các thao tác đọc/ghi được thực hiện bởi các pipeline.

Phương thức Template.copy(infile, outfile)

Sao chép từ infile sang outfile, qua pipeline.

Mã ví dụ

import pipes

my_template = pipes.Template()
my_template.append('tr a-z A-Z', '--')
my_template.prepend('echo Python Programming', '--')  # Prepend vào hàng đợi
my_template.append('rev', '--')
my_template.debug(True)
my_file = my_template.open('test_file', 'w')
my_file.close()
content = open('test_file').read()
print(content)

Kết quả

$ python3 example.py
echo Python Programming | tr a-z A-Z | rev >test_file
+ rev
+ tr a-z A-Z
+ echo Python Programming
GNIMMARGORP NOHTYP