我是Python的新手,我坚持这一点。我需要检查一下我是否可以在文件中找到一个字符串。 我创建了ContEAN.py文件
代码:
import sys
for arg in sys.argv:
inputEAN=arg
EAN = open("/home/master/Documenti/Progetti/eanFZ.txt","r")
riga=EAN.readlines()
EAN.close()
print inputEAN
for i in range(len(riga)):
if inputEAN == riga[i]:
print "OK"
从命令行:
$ python ContEAN.py 455
其中“455”将是inputEAN的值
这是eanFZ.txt的内容:
7777
777
0000000000156
0000000015
455
9999
85485
656565
问题是我从来没有得到最终结果,我不知道为什么......
答案 0 :(得分:1)
首先,readlines()方法返回一个可迭代的对象,可以在循环中迭代。每次迭代都将使用文件的下一行。
其次,文件的行末尾有一个隐藏的换行符,因此它与argv中的字符串“不相等”。这可以使用rstrip()方法删除。
for i in riga:
if inputEAN == i.rstrip():
print "OK"
(您可能还需要检查缩进。您需要在每行之后转到新的缩进级别,并且每行都是行。我假设这是由于复制和粘贴。)
答案 1 :(得分:0)
您可以按如下方式更改脚本:
import sys
if len(sys.argv) == 1:
exit;
inputEAN=sys.argv[1]
with open("file.txt","r") as f:
for i, a_line in enumerate(f, 1):
if inputEAN in a_line:
print(i, a_line.strip())
这会打印行号和找到给定字符串的行。
答案 2 :(得分:0)
你可以这样做
import sys
if len(sys.argv) < 2:
print "must provide args"
sys.exit()
with open("eanFZ.txt","r") as f:
lines=[line.strip() for line in f]
args = sys.argv[1:]
for line in lines:
if line in args:
print "OK"
请注意重要事项
args = sys.argv[1:]
不要在比较循环中使用sys.argv [0]。它是剧本的名称。
lines=[line.strip() for line in f]
从文件中删除换行符,使字符串匹配。