Nếu tôi làm như sau:
import subprocess
from cStringIO import StringIO
subprocess.Popen(['grep','f'],stdout=subprocess.PIPE,stdin=StringIO('one\ntwo\nthree\nfour\nfive\nsix\n')).communicate()[0]
Tôi có:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 533, in __init__
(p2cread, p2cwrite,
File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 830, in _get_handles
p2cread = stdin.fileno()
AttributeError: 'cStringIO.StringI' object has no attribute 'fileno'
Rõ ràng là một đối tượng cStringIO.StringIO không quấy đủ gần với một con vịt tập tin để phù hợp với quy trình con.Popen. Làm thế nào để tôi làm việc xung quanh này?
call(['ls', '-1'], shell=True)
không chính xác. Thay vào đó, tôi khuyên bạn nên đọc các câu hỏi phổ biến từ mô tả thẻ của quy trình con . Cụ thể, tại sao sub process.Popen không hoạt động khi args là chuỗi? giải thích tại sao call(['ls', '-1'], shell=True)
sai Tôi nhớ để lại bình luận dưới bài viết trên blog nhưng tôi không thấy chúng bây giờ vì một số lý do.
subprocess.run
hãy xem stackoverflow.com/questions/48752152/ Kẻ