我想遍历python中的列表,并在其后打印单词“ hello”。但是,我没有得到想要的输出。
代码读取具有数字ID的文本文件。我创建了读取ID的列表,并使用for循环对其进行了迭代。以下是我的代码:
def read_file():
pmid_s = []
file_object = open("file.txt", "r", encoding='cp1252')
pmid =file_object.read()
pmid_s.append(pmid)
for pmid in pmid_s:
return(pmid)
def driver(pmid):
print("hello"+pmid)
def main():
pmid= read_file
driver(pmid)
if __name__ == '__main__':
main()
所需的输出在新行中如下:
hello1
hello2
hello3
hello4
hello5
答案 0 :(得分:2)
如果我正确理解了您的问题,则需要使用driver(pmid)而不是return(pmid)。 另外,您可以使用split()方法拆分直接读取的内容,并且此后无需追加。参见下文:
def read_file():
pmid_s = []
file_object = open("file.txt", "r", encoding='cp1252')
pmid_s =file_object.read().split()
for pmid in pmid_s:
driver(pmid)
def driver(pmid):
print("hello {} \n ".format(pmid))
def main():
pmid= read_file()
if __name__ == '__main__':
main()
我还假设您读取的数字之间用空格隔开
答案 1 :(得分:1)
您有一个由一系列整数组成的文件,每行一个。文件迭代器产生文件的行。您可以通过遍历文件本身来构建列表。
def read_file(fname):
with open(fname, "r", encoding='cp1252') as f:
return [line.strip() for line in f]
def driver(s):
print("hello" + s)
def main():
for num in read_file("file.txt"):
driver(s)
if __name__ == "__main__":
main()
如果您想偷懒地做,请将read_file
设为生成器函数。
def read_file(fname):
with open(fname, "r", encoding='cp1252') as f:
for line in f:
yield line.strip()
当使用者尝试从生成的生成器中读取下一个项目时,一次只能将文件的一行读取到内存中。