Hướng dẫn node js spawn(python with arguments) - nút js sinh sản (trăn có đối số)

Tôi đang cố gắng "sinh ra" một kịch bản Python trong Node.js. Tập lệnh Python chấp nhận nhiều đường dẫn tệp như ARGS. Lệnh này hoạt động:

python3 script.py 'path2' 'path2' 'path3'

Trong nút, tôi được cung cấp một var với các đường dẫn:

args = ["path2", "path2", "path3"]

Nhưng khi tôi cố gắng sinh ra kịch bản:

var spawn = require["child_process"].spawn;
var pyspawn = spawn[
  'python3', [pyscript.py, args]
];

Nhưng điều này dường như phát hành lệnh:

python3 script.py [path2,path2,path3]

Tinkering với nhiều cách khác nhau [] s, tham gia [] s và toString [] Tôi có thể nhận được những thứ trông giống như:

python3 script.py "'path2' 'path2' 'path3'"

... nhưng không thể cho cuộc sống của tôi hình như thế nào để làm điều này đơn giản

Trẻ em kế thừa từ EventEmitter, điều đó có nghĩa là bạn có thể đính kèm trình xử lý để nghe 'Lỗi', 'Đóng' và các sự kiện 'dữ liệu' có thể đọc được.

Dữ liệu phát ra là một bộ đệm nút, vì vậy đối với khả năng sử dụng, bạn có thể sử dụng

args = ["path2", "path2", "path3"]
8 để chuyển đổi nó thành một chuỗi.

Dưới đây cho thấy một ví dụ trong nút, chuyển dữ liệu từ nút sang tập lệnh python 'người trợ giúp.py', sau đó quay lại nút để có thể ghi lại dữ liệu được thao tác vào bảng điều khiển.

index.js

Bây giờ nếu bạn đã chạy chương trình nút trên có tên là index.js trong dòng lệnh bằng cách sử dụng

args = ["path2", "path2", "path3"]
9. Bạn sẽ thấy những điều sau đây.

Dòng lệnh

Cảm ơn vì đã đọc!

Trẻ em kế thừa từ EventEmitter, điều đó có nghĩa là bạn có thể đính kèm trình xử lý để nghe 'Lỗi', 'Đóng' và các sự kiện 'dữ liệu' có thể đọc được.

$ python helper.py

Nhập chế độ FullScreenen EXIT Mode FullScreen

Dữ liệu phát ra là một bộ đệm nút, vì vậy đối với khả năng sử dụng, bạn có thể sử dụng

args = ["path2", "path2", "path3"]
8 để chuyển đổi nó thành một chuỗi.

Dưới đây cho thấy một ví dụ về việc sử dụng Spawn để chạy tập lệnh Python có tên là Helper.py.

index.js

const { spawn } = require['child_process'];
spawn['python', ['helper.py']];

Nhập chế độ FullScreenen EXIT Mode FullScreen

Vượt qua dữ liệu giữa nút và Python

Mô -đun Python Sys

Trong Python,

args = ["path2", "path2", "path3"]
1 là một danh sách có chứa các đối số được chuyển đến kịch bản. Dưới đây
args = ["path2", "path2", "path3"]
2 được sử dụng để ghi vào luồng đầu ra tiêu chuẩn. Mặc dù
args = ["path2", "path2", "path3"]
3 làm điều tương tự,
args = ["path2", "path2", "path3"]
3 cũng định dạng đầu ra bằng cách thêm một dòng mới ở cuối [
args = ["path2", "path2", "path3"]
5].

người trợ giúp.py

import sys

symbol, count = sys.argv[1], sys.argv[2]

pattern = symbol * int[count]

sys.stdout.write[pattern]

Nhập chế độ FullScreenen EXIT Mode FullScreen

Vượt qua dữ liệu giữa nút và Python

Mô -đun Python Sys

Trong Python,

args = ["path2", "path2", "path3"]
1 là một danh sách có chứa các đối số được chuyển đến kịch bản. Dưới đây
args = ["path2", "path2", "path3"]
2 được sử dụng để ghi vào luồng đầu ra tiêu chuẩn. Mặc dù
args = ["path2", "path2", "path3"]
3 làm điều tương tự,
args = ["path2", "path2", "path3"]
3 cũng định dạng đầu ra bằng cách thêm một dòng mới ở cuối [
args = ["path2", "path2", "path3"]
5].

người trợ giúp.py

index.js

const { spawn } = require['child_process'];
const python = spawn['python', ['helper.py', 'text', 4]];

python.stdout.on['data', [data] => {
  console.log['pattern: ', data.toString[]];
}];

python.stderr.on['data', [data] => {
  console.error['err: ', data.toString[]];
}];

python.on['error', [error] => {
  console.error['error: ', error.message];
}];

python.on['close', [code] => {
  console.log['child process exited with code ', code];
}];

Nhập chế độ FullScreenen EXIT Mode FullScreen

Vượt qua dữ liệu giữa nút và Python

Mô -đun Python Sys

pattern:  texttexttexttext
child process exited with code  0

Nhập chế độ FullScreenen EXIT Mode FullScreen

Vượt qua dữ liệu giữa nút và Python

Bài Viết Liên Quan

Chủ Đề