为什么我的bash脚本在从python脚本调用时不读取文件中的行?

时间:2015-03-01 22:26:40

标签: python arrays bash call

我正在尝试用bash编写一个小程序,其中一部分需要能够从txt文件中获取一些值,其中不同的文件由一行分隔,然后将每行添加到变量或添加每行到一个数组。

到目前为止,我已经尝试过这个:

FILE=$"transfer_config.csv"
while read line
do
    MYARRAY[$index]="$line"
    index=$(($index+1))
done < $FILE
echo ${MYARRAY[0]}

这只会产生一个空行,而不是配置文件第一行的内容。

我没有收到任何错误,这就是为什么我不太清楚为什么会这样。

使用os.system("$HOME/bin/mcserver_config/server_transfer/down/createRemoteFolder")通过python脚本调用bash脚本,但是如果我在python程序创建bash脚本读取的文件之后调用它,它就可以工作。

我几乎100%确定这不是目录的问题,因为bash脚本顶部的pwd显示在正确的目录中,而python程序也在创建数据文件正确的地方。

非常感谢任何帮助。

编辑:

我也试过subprocess.call("path_to_script", shell=True)看看它是否有所作为,我知道这不太可能,但它没有。

1 个答案:

答案 0 :(得分:0)

我怀疑当从python调用bash脚本时,刚刚创建了该文件,你并没有真正完成该文件:你应该显式关闭文件或使用with构造。

否则,写入的数据仍然在任何缓冲区中(来自文件对象,OS中或任何地方)。只关闭(或至少刷新)文件,确保数据确实在文件中。

BTW,而不是os.system,您应该使用subprocess模块......