私はsubprocess
と対話していて、自分の入力の準備ができていることを検出しようとしています。私が抱えている問題は、readまたはreadline
関数が、行末の '\ n'デリミタ、または降伏するEOFに依存していることです。このsubprocess
は決して終了しないので、オブジェクトのようなファイルにはEOF
はありません。私がオフにしたいキーワードにはその区切り文字が含まれていないので、readとreadline
関数は決して降伏しません。たとえば:読み取り専用または読み込み専用のPythonカスタム区切り文字
'Doing something\n'
'Doing something else\n'
'input>'
このプロセスが終了したことがないので、読み取りまたは読み取り行は、それが生成するために必要であることをEOF
または\n
を見ることはありません。
オブジェクトのようにこのファイルを読み取り、カスタム区切り文字をinput>
に設定する方法はありますか?彼らはによって提供されていない場合は、データの大スワスをつかむことができなくなりますため、Pythonのデフォルトのバッファリングのポリシーに、残念ながら
def custom_readlines(handle, line_separator="\n", chunk_size=64):
buf = "" # storage buffer
while not handle.closed: # while our handle is open
data = handle.read(chunk_size) # read `chunk_size` sized data from the passed handle
if not data: # no more data...
break # break away...
buf += data # add the collected data to the internal buffer
if line_separator in buf: # we've encountered a separator
chunks = buf.split(line_separator)
buf = chunks.pop() # keep the last entry in our buffer
for chunk in chunks: # yield the rest
yield chunk + line_separator
if buf:
yield buf # return the last buffer if any
:
コードを表示できますか? (最小の小さな例) –
この問題を解決するには、[mcve]が必要です。 –
入力を一度に1文字ずつ読み込みます。 – Goyo