我的任务是: "编写一个程序,读取并打印出所有以给定字母开头的行。文件路径和起始字母将作为命令行参数。你可以假设所有的命令行参数都是有效的"
例如
$ cat cats.txt
calico
siamese
ginger
cute, cuddly
$ python3 filter.py cats.txt c
calico
cute, cuddly
$ python3 filter.py cats.txt g
ginger
我的代码现在看起来是这样的。
import sys
with open("cats.txt", "r") as f:
a = f.readlines()
word_no = 0
l = len(a) - 1
while word_no <= l:
if (a[word_no][0]) == sys.argv[1]:
print (a[word_no])
word_no += 1
在你的代码中似乎有一些错误 - 硬编码的文件路径,不正确的索引,以及不正确的代码。sys.argv
和印刷线 \n
. 更正后的代码。
import sys
with open(sys.argv[1], "r") as f:
a = f.readlines()
word_no = 0
l = len(a) - 1
while word_no <= l:
if (a[word_no][0]) == sys.argv[2]:
print (a[word_no].strip())
word_no += 1
还有,写这段代码的更好方法是:
import sys
with open(sys.argv[1], "r") as f:
for line in f:
if line[0] == sys.argv[2]:
print(line.strip())