問題タブ [shlex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - shlex.split の逆は何ですか?
の結果を元に戻すにはどうすればよいshlex.split
ですか? つまり、引用したい文字列が与えられた場合、「Unix シェルに似た」list
引用符付き文字列を取得するにはどうすればよいでしょうか?
Update0
私は Python のバグを見つけ、対応する機能のリクエストをここで行いました。
python - shlex.splitがUNCパスを尊重するようにする
shlex.split
呼び出しの引数をトークン化するために使用していsubprocess.Popen
ます。ただし、これらの引数の1つがUNCパスである場合、事態は悪化します。
を生成します
ご覧のとおり、前面のバックスラッシュは削除されています。次の2行を追加してこれを回避していますが、もっと良い方法はありますか?
python - python shlex.splitと同等のelisp?
elispのコマンドラインを解析する必要があります。次のようなものです。
どうすればこれを簡単な方法で達成できますか?
python - Python shlex.split()、一重引用符を無視
shlex.split()
Python では、二重引用符のみを保持して、文字列を分割するために使用または同様にするにはどうすればよいですか? たとえば、入力が の"hello, world" is what 'i say'
場合、出力は になります["hello, world", "is", "what", "'i", "say'"]
。
python - shlexを使用したサブプロセス呼び出しでワイルドカードが機能しない
言語: Python v2.6.2
OS: AIX 5.3
私は Python を使用して、バックアップからテスト システムにいくつかのファイルを復元しています。
コマンドから * を削除すると、コマンドは正常に機能します (まあ、ワイルドカードがなくても正常に機能しますが、これは残念ながら私が望んでいるものではありません)。
明らかにセキュリティ上の理由から shell=True を使用したくありませんが、基本的に同じことを行うコマンドが他にもいくつかあります。コマンドにワイルドカードがある場合、それは機能しません。エラーなしで実行され、何もしません。
興味深いことに、次のコマンド (shlex で解析):
以下を生成します。
mv: 0653-401 /work/testrestore/production/* を /work/TESTC/* に名前変更できません: パス名のファイルまたはディレクトリが存在しません。
あたかも UNIX が * をワイルドカードとして使用するのではなく、* という名前のファイルを移動しようとしているかのようです。これはシュレックスの典型的な行動ですか?
編集: * を \ でエスケープしようとしましたが、一重引用符から二重引用符に変更しようとしました..それが何かをするとは思っていませんでした。
python - Haskellでシェルのような構文を分割しますか?
Haskellでシェルスタイルの構文で文字列を分割するにはどうすればよいですか? Python での同等物はshlex.split
.
python - WindowsおよびLinuxでのsubprocess.Popenおよびshlex.splitのフォーマット
Python(2.7.2)を介していくつかのAndroidADBシェルコマンドを自動化するラッパーを作成しています。場合によっては、コマンドを非同期で実行する必要があるため、サブプロセス.Popenメソッドを使用してシェルコマンドを発行しています。
[command, args]
メソッドのパラメーターのフォーマットに問題が発生しましたPopen
。WindowsとLinuxではコマンド/引数の分割が異なります。
posixフラグを使用して、または使用せずに、 shlex .split()を使用してみました。
どちらの場合も同じ分割を返します。
OS固有のフォーマットを正しく処理する方法はありますsubprocess
か?shlex
これが私の現在の解決策です:
shlex.split()
ここでは何もしていないと思いますが、cmd.split()
同じ結果が得られます。
python - このスクリプト言語を解析する最も効率的な方法
古くからあるテキスト エディターのスクリプト言語のインタープリターを実装していますが、レクサーを適切に動作させるのに問題があります。
言語の問題のある部分の例を次に示します。
文字は/
文字列を引用しているように見え、-type 構文のC
( CHANGE
) コマンドの区切り文字としても機能しsed
ますが、区切り文字として任意の文字を使用できます。
今まで使用しただけで、おそらく最も一般的なコマンドの約半分を実装しましたparse_tokens(line.split())
。それは手早く汚いものでしたが、驚くほどうまく機能しました。
独自のレクサーを作成しないようにするために、 を試しshlex
ました。
CHANGE
次の場合を除いて、かなりうまく機能します。
これを達成する簡単な方法を知っている人はいshlex
ますか?
編集:
役立つ場合CHANGE
は、ヘルプ ファイルに記載されているコマンド構文を次に示します。
同様にトークン化が困難でX
、Y
コマンド:
python - Python を使用して、ssh 経由でファイルをリモート bash スクリプトに cat する
sshを使用してリモートbashスクリプトを呼び出すために、shlexでsubprocess.popenを使用しています。このコマンドは、bash 自体で非常にうまく機能します。しかし、subprocess.popen を使用して python と shlex に変換しようとするとすぐに、エラーが発生します。
リモート bash スクリプト:
BASH CMD RESULT (コマンドラインでのリモート bash スクリプトの呼び出し)
Python コード
PYTHON スクリプトの結果:
私は何が欠けていますか?
python - Pythonshlex.split関数に代わるPowershell
Powershell用のpythonshlex.split()関数に代わるものを探しています。Googleはこれまで私を助けてくれませんでした。
この関数の機能がわからない場合は、文字列を複数の「フィールド」のリストに分割できますが、引用符で囲まれた部分文字列は除外されます。
例えば:
次の文字列: これには「インスピレーションはありません」
次のように分割されます:私は、インスピレーションがなく、これのために
このためにPowerShellに切り替えたい理由は、実稼働WindowsサーバーにPythonをインストールする必要がないようにするためです。
前もって感謝します