Shell 无法读取用 python 编写的文件

Shell 无法读取用 python 编写的文件

我创建了一个 python 文件,它告诉文件夹中的每个 .java 文件,您可以选择要执行哪个 java 文件,然后将所选 java 文件的名称写入名为 Input.txt 的文件中,但我无法在 shell 中读取该文件:

我的Python文件:

import glob, os
import sys
a=sys.path
count=0
os.chdir(a[0])
ifile=open("Input.txt","w")
i=1
for file in glob.glob("*.java"):
    if(count%2==0):
        print(i,".",file,end="")
        g=str(i)
        l=len(file)+len(g)
    else:
        print("".rjust(40-l,' '),i,".",file)
    i=i+1
    count=count+1
print("")
flag=1
while flag==1:
    f=int(input("Enter The File No. You Want To Execute:"))
    i=1
    for file in glob.glob("*.java"):
        if(i==f):
            flag=0
            x=file
            break
        i=i+1
    if flag==1:
        print("File Not Found!!\nPlease Enter Again:")
ifile.write(x)
ifile.close()

外壳文件如下所示:

#!/bin/bashs
echo WELCOME TO EXECUTOR
echo Garvit Joshi\([email protected]\)
echo USER:$USERNAME
python3 Filename_java.py
filename="Input.txt"
while IFS= read -r line
do
        echo "$line"
done <"$filename"
exit

.sh 文件的输出 编辑1:请不要通过python文件的算法。它工作正常。

答案1

请不要经过python文件的算法。它工作正常。

嗯,是的 - 但实际上不是。它写入文件名的字符,但不以换行符终止字符串。

shell 的read命令期望读取完整的行,如果没有读取,则返回非零退出状态。因此while IFS= read -r line不执行循环体。

您应该修改您的 python 代码以编写终止换行符,或者修改您的 shell 代码以便循环体也测试非空行:

while IFS= read -r line || [[ -n $line ]]; do ...

例如为什么这个“while”循环不能识别最后一行?

相关内容