Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以在内存中保存由Python脚本创建并可供当前bash shell使用的大量字符串?_Python_Bash - Fatal编程技术网

有没有一种方法可以在内存中保存由Python脚本创建并可供当前bash shell使用的大量字符串?

有没有一种方法可以在内存中保存由Python脚本创建并可供当前bash shell使用的大量字符串?,python,bash,Python,Bash,假设我在Python程序中列出了许多文件路径,然后想在终端中使用它 我可以把它存储到一个文件中 我可以在Python程序之外通过管道传输它,这样bash就可以读取它 但是can只是设置了某种变量,以便当前shell(运行脚本的shell)作为普通bash变量访问输出?您可以设置一个环境变量 但是,要使当前shell能够访问hit,您可能需要使用一些hack: 在python脚本中,创建一个临时的.sh文件,该文件将使用export yourname=yourlist设置环境变量,然后运行并删除它

假设我在Python程序中列出了许多文件路径,然后想在终端中使用它

我可以把它存储到一个文件中

我可以在Python程序之外通过管道传输它,这样bash就可以读取它


但是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的模块

  • 创建一个python程序,将文件打印到标准输出
  • 使用backticks执行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$ 
    
  • 创建一个python程序,将文件打印到标准输出
  • 使用backticks执行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$ 
    

    听起来您希望在进程之间共享内存。虽然我不确定这在你的操作系统上是否可行,但它不是首选。使用共享外部资源(例如,文件)或你刚才提到的管道是一种方法。我不想知道这是否是一个好主意。我想知道这是否可能。我知道进程间共享数据的缺点。然后你应该简单地问“进程间共享内存可能吗?”;-)。说到可能性,答案肯定是可能的。听起来你想在进程之间共享内存。虽然我不确定这在你的操作系统上是否可行,但它不是首选。使用共享外部资源(例如,文件)或你刚才提到的管道是一种方法。我不想知道这是否是一个好主意。我想知道这是否可能。我知道进程间共享数据的缺点。然后你应该简单地问“进程间共享内存可能吗?”;-)。说到可能性,答案肯定是可能的。不太干净,但足够聪明,值得+1。我认为最干净的方法是通过管道将它:-)好吧,你可以让它更难看:如果你的脚本在X会话中运行,只需使用:-)不太干净,但是聪明到应该得到+1我认为最干净的方法就是通过管道传输:-)好吧,你可以让它变得更难看:如果你的脚本在一个X会话中运行,只需使用:-)就像管道传输一样。但是+1,因为它试图回答问题,就像管道一样。但是+1,因为它确实试图回答问题。