は、私は、このコマンドを使用してランダムな文字列を生成しようとしていることをコマンド文字列の/ dev/urandomコマンドとスパム私の画面とgrep: writing output: Broken pipe
取得出力は使用パイプ(パイソン)
これは何が原因で、私はそれを修正しますか?
は、私は、このコマンドを使用してランダムな文字列を生成しようとしていることをコマンド文字列の/ dev/urandomコマンドとスパム私の画面とgrep: writing output: Broken pipe
取得出力は使用パイプ(パイソン)
これは何が原因で、私はそれを修正しますか?
サブプロセスは必要ない、守っ:
>>> import base64
>>> r = open("/dev/urandom","r")
>>> base64.encodestring(r.read(22))[:30]
'3Ttlx6TT3siM8h+zKm+Q6lH1k+dTcg'
>>> r.close()
をまた、/dev/urandom
から英数字をINGのstrings
ING、その後grep
はランダム性の非常非効率的な廃棄物全体の多くです。私のデスクトップPCで、上記のpythonはbashのから実行さ10ミリ秒未満にかかり、あなたのstrings ...
onelinerは/dev/urandom
ないシステム上でも動作する純粋なPythonのソリューションについて300-400 ...
を取る - と英数字のみを提供します(実際に+または/が必要ない場合):
import string
import random
''.join([random.choice(string.printable[:62]) for i in range(30)])
これは正しい答えです。なぜ車を再発明するのですか? –
よろしくお願いいたします。 – gEr
まず、何をしているのか、Pythonを使って文字列を直接生成する方がよいでしょう。とにかく
、subprocess
を使用して、別のプロセスからのパイプデータに正しい方法はsubprocess.PIPE
にstdout
及び/又はstderr
をリダイレクトすることによってであり、そしてstdout
前工程とstdin
新しいプロセスを養います。
'実行可能な= '/ bin/bash''を明示的に' call'に追加するとどうなりますか? – agf
まだ同じ問題があります。 – gEr