有没有一种方法可以在内存中保存由Python脚本创建并可供当前bash shell使用的大量字符串?
假设我在Python程序中列出了许多文件路径,然后想在终端中使用它 我可以把它存储到一个文件中 我可以在Python程序之外通过管道传输它,这样bash就可以读取它有没有一种方法可以在内存中保存由Python脚本创建并可供当前bash shell使用的大量字符串?,python,bash,Python,Bash,假设我在Python程序中列出了许多文件路径,然后想在终端中使用它 我可以把它存储到一个文件中 我可以在Python程序之外通过管道传输它,这样bash就可以读取它 但是can只是设置了某种变量,以便当前shell(运行脚本的shell)作为普通bash变量访问输出?您可以设置一个环境变量 但是,要使当前shell能够访问hit,您可能需要使用一些hack: 在python脚本中,创建一个临时的.sh文件,该文件将使用export yourname=yourlist设置环境变量,然后运行并删除它
但是can只是设置了某种变量,以便当前shell(运行脚本的shell)作为普通bash变量访问输出?您可以设置一个环境变量 但是,要使当前shell能够访问hit,您可能需要使用一些hack: 在python脚本中,创建一个临时的
.sh
文件,该文件将使用export yourname=yourlist
设置环境变量,然后运行并删除它
另一种方法是使用python的
socket
模块,并使用socat
或netcat
在shell中读取它,或者使用python的模块。您可以设置一个环境变量
但是,要使当前shell能够访问hit,您可能需要使用一些hack:
在python脚本中,创建一个临时的.sh
文件,该文件将使用export yourname=yourlist
设置环境变量,然后运行并删除它
另一种方法是使用python的
socket
模块,并使用socat
或netcat
在shell中读取它,或者使用python的模块
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$
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$
听起来您希望在进程之间共享内存。虽然我不确定这在你的操作系统上是否可行,但它不是首选。使用共享外部资源(例如,文件)或你刚才提到的管道是一种方法。我不想知道这是否是一个好主意。我想知道这是否可能。我知道进程间共享数据的缺点。然后你应该简单地问“进程间共享内存可能吗?”;-)。说到可能性,答案肯定是可能的。听起来你想在进程之间共享内存。虽然我不确定这在你的操作系统上是否可行,但它不是首选。使用共享外部资源(例如,文件)或你刚才提到的管道是一种方法。我不想知道这是否是一个好主意。我想知道这是否可能。我知道进程间共享数据的缺点。然后你应该简单地问“进程间共享内存可能吗?”;-)。说到可能性,答案肯定是可能的。不太干净,但足够聪明,值得+1。我认为最干净的方法是通过管道将它:-)好吧,你可以让它更难看:如果你的脚本在X会话中运行,只需使用:-)不太干净,但是聪明到应该得到+1我认为最干净的方法就是通过管道传输:-)好吧,你可以让它变得更难看:如果你的脚本在一个X会话中运行,只需使用:-)就像管道传输一样。但是+1,因为它试图回答问题,就像管道一样。但是+1,因为它确实试图回答问题。