我想迭代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
你有一个由一系列整数组成的文件,每行一个。文件迭代器生成文件的行。您可以通过迭代文件本身来构建列表。
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()
当消费者试图从生成的生成器中读取下一个项目时,这一次只能将文件的一行读入内存。
如果我正确理解你的问题,你需要使用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()
我还假设你读的数字是由空格分隔的