当从 python 脚本调用时,为什么我的 bash 脚本不从文件中读取行?
Why doesn't my bash script read lines from a file when called from a python script?
我正在尝试在 bash 中编写一个小程序,它的一部分需要能够从 txt 文件中获取一些值,其中不同的文件由一行分隔,然后添加每个行到变量或将每一行添加到一个数组。
到目前为止我试过这个:
FILE=$"transfer_config.csv"
while read line
do
MYARRAY[$index]="$line"
index=$(($index+1))
done < $FILE
echo ${MYARRAY[0]}
这只是产生一个空行,而不是配置文件第一行的内容。
我没有返回任何错误,这就是为什么我不太确定为什么会这样。
bash 脚本是通过使用 os.system("$HOME/bin/mcserver_config/server_transfer/down/createRemoteFolder")
的 python 脚本调用的,但是如果我只是在 python 程序生成文件后调用它 python =37=] 脚本读取,有效。
我几乎 100% 确定这不是目录的问题,因为 bash 脚本顶部的 pwd
显示它在正确的目录中,并且 python 程序还在正确的位置创建数据文件。
非常感谢任何帮助。
编辑:
我也尝试了 subprocess.call("path_to_script", shell=True)
看看它是否会有所不同,我知道这不太可能但没有。
我怀疑当从 python 调用 bash 脚本时,刚刚创建了文件,您并没有真正完成该文件:您应该显式关闭文件或使用 with
构造.
否则,写入的数据仍在任何缓冲区中(来自文件对象,或在 OS,或任何地方)。只有关闭(或至少刷新)文件才能确保数据确实在文件中。
顺便说一句,您应该使用 subprocess
模块而不是 os.system
...
我正在尝试在 bash 中编写一个小程序,它的一部分需要能够从 txt 文件中获取一些值,其中不同的文件由一行分隔,然后添加每个行到变量或将每一行添加到一个数组。
到目前为止我试过这个:
FILE=$"transfer_config.csv"
while read line
do
MYARRAY[$index]="$line"
index=$(($index+1))
done < $FILE
echo ${MYARRAY[0]}
这只是产生一个空行,而不是配置文件第一行的内容。
我没有返回任何错误,这就是为什么我不太确定为什么会这样。
bash 脚本是通过使用 os.system("$HOME/bin/mcserver_config/server_transfer/down/createRemoteFolder")
的 python 脚本调用的,但是如果我只是在 python 程序生成文件后调用它 python =37=] 脚本读取,有效。
我几乎 100% 确定这不是目录的问题,因为 bash 脚本顶部的 pwd
显示它在正确的目录中,并且 python 程序还在正确的位置创建数据文件。
非常感谢任何帮助。
编辑:
我也尝试了 subprocess.call("path_to_script", shell=True)
看看它是否会有所不同,我知道这不太可能但没有。
我怀疑当从 python 调用 bash 脚本时,刚刚创建了文件,您并没有真正完成该文件:您应该显式关闭文件或使用 with
构造.
否则,写入的数据仍在任何缓冲区中(来自文件对象,或在 OS,或任何地方)。只有关闭(或至少刷新)文件才能确保数据确实在文件中。
顺便说一句,您应该使用 subprocess
模块而不是 os.system
...