ถ้าฉันทำต่อไปนี้:
import subprocess
from cStringIO import StringIO
subprocess.Popen(['grep','f'],stdout=subprocess.PIPE,stdin=StringIO('one\ntwo\nthree\nfour\nfive\nsix\n')).communicate()[0]
ฉันเข้าใจ:
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'
เห็นได้ชัดว่าวัตถุ cStringIO.StringIO นั้นไม่ได้อยู่ใกล้กับเป็ดพอที่จะให้เหมาะสมกับ subprocess.Popen ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
call(['ls', '-1'], shell=True)
ไม่ถูกต้อง ฉันแนะนำให้อ่านคำถามทั่วไปจากคำอธิบายแท็กของกระบวนการย่อยแทน โดยเฉพาะทำไม subprocess.Popen ไม่ทำงานเมื่อ args เป็นลำดับ? อธิบายว่าทำไมcall(['ls', '-1'], shell=True)
ผิด ฉันจำการแสดงความคิดเห็นใต้โพสต์บล็อก แต่ฉันไม่เห็นพวกเขาตอนนี้ด้วยเหตุผลบางอย่าง
subprocess.run
ดูstackoverflow.com/questions/48752152/…