0

Pythonプログラムに多くのファイルパスをリストし、それをターミナルで使用したいとします。

私はそれをファイルに保存することができました。

Pythonプログラムの外部にパイプして、bashが読み取れるようにすることができます。

しかし、canは、現在のシェル(スクリプトを実行しているシェル)が通常のbash変数として出力にアクセスできるように、ある種の変数を設定するだけですか?

4

2 に答える 2

2

環境変数を設定できます。

ただし、現在のシェルにヒットへのアクセスを許可するには、おそらくちょっとしたハックを使用する必要があります。

Python スクリプトで、 を.sh使用して環境変数を設定する一時ファイルを作成しexport yourname=yourlist、実行して削除します。


もう 1 つの方法は、たとえば、 Python のモジュールを使用してUnix Domain Socketsを使用し、またはPython のモジュールを使用socketしてシェルで読み取ることです。socatnetcatmmap

于 2012-08-31T09:25:43.117 に答える
1
  1. ファイルを stdout に出力する Python プログラムを作成します。
  2. バックティックを使用して python スクリプトを実行し、スクリプトの出力を bash 変数に保存します。

「$var」を使用して bash 変数にアクセスすると改行が保持されるのに対し、プレーンな $var を使用すると改行がスペースに変更されるという違いに注意してください。

paddy$ echo $SHELL
/bin/bash
paddy$ unset frompython 
paddy$ cat alltxt.py 
from glob import glob
print("\n".join(glob("*.txt")))
paddy$ python alltxt.py 
entry3.txt
entry2.txt
test_in2.txt
infile.txt
test_in.txt
entry.txt
entry1.txt
testfile.txt
paddy$ frompython=`python alltxt.py`
paddy$ echo $frompython
entry3.txt entry2.txt test_in2.txt infile.txt test_in.txt entry.txt entry1.txt testfile.txt
paddy$ echo "$frompython"
entry3.txt
entry2.txt
test_in2.txt
infile.txt
test_in.txt
entry.txt
entry1.txt
testfile.txt
paddy$ 
于 2012-08-31T10:39:04.530 に答える