我有一个python脚本,它基本上可以对文件执行某些操作并生成较短的文件。我希望脚本继续在每个后续输出文件上运行,直到输出文件和最新的输入文件具有相同的行数。
python脚本的工作原理如下:
python Joiner.py input.txt output.txt
我想创建一个运行类似这样的BASH脚本:
while [outputfilelines -lt inputfilelines]
do
python Joiner.py inputfile.txt outputfile.txt
done
然后每个输出文件成为下一个循环的输入文件。我尝试了一些不同的东西,但我似乎无法让它正常工作。我无法弄清楚如何将一个文件保留在循环中并吐出另一个文件。
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
IN=input.txt
OUT=output.txt
touch $OUT
while [ ! $(wc -l < $IN) -eq $(wc -l < $OUT) ]; do
python Joiner.py $IN $OUT
mv $OUT $IN
done
答案 1 :(得分:0)
这几乎是蛮力和无知:
I_FILE="input.txt"
O_FILE="output.txt"
old=$(wc -l <"$I_FILE")
while python Joiner.py "$I_FILE" "$O_FILE"
new=$(wc -l < "$O_FILE")
mv "$O_FILE" "$I_FILE"
[ $new != $old ]
do
old=$new
done
while
条件评估四个命令 - python
命令,new=
行计数分配,移动命令和控制循环的[ $new != $old ]
测试(它是重要的考验)。如果计数不同,则将新计数记录为旧计数并重复。没有多少人知道你可以在shell while
循环的条件部分中运行这样的多个命令。
答案 2 :(得分:0)
如果内容也相同,则可以使用diff:
while ! diff "$IN" "$OUT"; do
python Joiner.py "$IN" "$OUT"
mv "$OUT" "$IN"
done