問題タブ [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.

0 投票する
6 に答える
10467 参照

python - shlex.split の逆は何ですか?

の結果を元に戻すにはどうすればよいshlex.splitですか? つまり、引用したい文字列が与えられた場合、「Unix シェルに似た」list引用符付き文字列を取得するにはどうすればよいでしょうか?

Update0

私は Python のバグを見つけ、対応する機能のリクエストをここで行いました。

0 投票する
2 に答える
3162 参照

python - shlex.splitがUNCパスを尊重するようにする

shlex.split呼び出しの引数をトークン化するために使用していsubprocess.Popenます。ただし、これらの引数の1つがUNCパスである場合、事態は悪化します。

を生成します

ご覧のとおり、前面のバックスラッシュは削除されています。次の2行を追加してこれを回避していますが、もっと良い方法はありますか?

0 投票する
1 に答える
181 参照

python - python shlex.splitと同等のelisp?

elispのコマンドラインを解析する必要があります。次のようなものです。

どうすればこれを簡単な方法で達成できますか?

0 投票する
2 に答える
21023 参照

python - Python shlex.split()、一重引用符を無視

shlex.split()Python では、二重引用符のみを保持して、文字列を分割するために使用または同様にするにはどうすればよいですか? たとえば、入力が の"hello, world" is what 'i say'場合、出力は になります["hello, world", "is", "what", "'i", "say'"]

0 投票する
1 に答える
5004 参照

python - shlexを使用したサブプロセス呼び出しでワイルドカードが機能しない

言語: Python v2.6.2

OS: AIX 5.3

私は Python を使用して、バックアップからテスト システムにいくつかのファイルを復元しています。

コマンドから * を削除すると、コマンドは正常に機能します (まあ、ワイルドカードがなくても正常に機能しますが、これは残念ながら私が望んでいるものではありません)。

明らかにセキュリティ上の理由から shell=True を使用したくありませんが、基本的に同じことを行うコマンドが他にもいくつかあります。コマンドにワイルドカードがある場合、それは機能しません。エラーなしで実行され、何もしません。

興味深いことに、次のコマンド (shlex で解析):

以下を生成します。

mv: 0653-401 /work/testrestore/production/* を /work/TESTC/* に名前変更できません: パス名のファイルまたはディレクトリが存在しません。

あたかも UNIX が * をワイルドカードとして使用するのではなく、* という名前のファイルを移動しようとしているかのようです。これはシュレックスの典型的な行動ですか?

編集: * を \ でエスケープしようとしましたが、一重引用符から二重引用符に変更しようとしました..それが何かをするとは思っていませんでした。

0 投票する
1 に答える
497 参照

python - Haskellでシェルのような構文を分割しますか?

Haskellでシェルスタイルの構文で文字列を分割するにはどうすればよいですか? Python での同等物はshlex.split.

0 投票する
2 に答える
23486 参照

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()同じ結果が得られます。

0 投票する
1 に答える
579 参照

python - このスクリプト言語を解析する最も効率的な方法

古くからあるテキスト エディターのスクリプト言語のインタープリターを実装していますが、レクサーを適切に動作させるのに問題があります。

言語の問題のある部分の例を次に示します。

文字は/文字列を引用しているように見え、-type 構文のC( CHANGE) コマンドの区切り文字としても機能しsedますが、区切り文字として任意の文字を使用できます。

今まで使用しただけで、おそらく最も一般的なコマンドの約半分を実装しましたparse_tokens(line.split())。それは手早く汚いものでしたが、驚くほどうまく機能しました。

独自のレクサーを作成しないようにするために、 を試しshlexました。

CHANGE次の場合を除いて、かなりうまく機能します。

これを達成する簡単な方法を知っている人はいshlexますか?

編集:

役立つ場合CHANGEは、ヘルプ ファイルに記載されているコマンド構文を次に示します。

同様にトークン化が困難でXYコマンド:

0 投票する
2 に答える
2792 参照

python - Python を使用して、ssh 経由でファイルをリモート bash スクリプトに cat する

sshを使用してリモートbashスクリプトを呼び出すために、shlexでsubprocess.popenを使用しています。このコマンドは、bash 自体で非常にうまく機能します。しかし、subprocess.popen を使用して python と shlex に変換しようとするとすぐに、エラーが発生します。

リモート bash スクリプト:

BASH CMD RESULT (コマンドラインでのリモート bash スクリプトの呼び出し)

Python コード

PYTHON スクリプトの結果:

私は何が欠けていますか?

0 投票する
1 に答える
491 参照

python - Pythonshlex.split関数に代わるPowershell

Powershell用のpythonshlex.split()関数に代わるものを探しています。Googleはこれまで私を助けてくれませんでした。

この関数の機能がわからない場合は、文字列を複数の「フィールド」のリストに分割できますが、引用符で囲まれた部分文字列は除外されます。

例えば:

次の文字列: これには「インスピレーションはありません」

次のように分割されます:私は、インスピレーションがなく、これのために

このためにPowerShellに切り替えたい理由は、実稼働WindowsサーバーにPythonをインストールする必要がないようにするためです。

前もって感謝します