python导入文件名并按字母顺序排序
我不明白为什么我的简单名称脚本不能工作。它似乎在while循环中出错。我可能打错电话了,但我想在我继续研究的过程中,我可能会尝试在这里找到答案python导入文件名并按字母顺序排序,python,file,while-loop,Python,File,While Loop,我不明白为什么我的简单名称脚本不能工作。它似乎在while循环中出错。我可能打错电话了,但我想在我继续研究的过程中,我可能会尝试在这里找到答案 #!/usr/bin/python #open the file name_file = open('names.txt', 'r') #read in lines names = name_file.readlines() #close file name_file.close() #loop to place names in array i
#!/usr/bin/python
#open the file
name_file = open('names.txt', 'r')
#read in lines
names = name_file.readlines()
#close file
name_file.close()
#loop to place names in array
index = 0
while index < len(names):
names[index] = names[index].rstrip('\n')
index += 1
#sort
names.sort()
#print sorted names
print names
#/usr/bin/python
#打开文件
name_file=open('names.txt','r')
#排队阅读
names=name\u file.readlines()
#关闭文件
name_file.close()
#循环以在数组中放置名称
索引=0
而索引
也许这样可以:
with open ('names.txt', 'r') as f:
names = sorted (name.rstrip ('\n') for name in f)
print (names)
带有的负责在离开作用域后关闭文件
with open('names.txt', 'r') as f:
names = sorted(f.readlines())
for (i, name) in enumerate(names):
names[i] = name.rstrip('\n')
这应该能奏效
对于这类事情,最好使用for循环。你说的“不工作”是什么意思?作为将来的参考,以这种方式编写而循环是额外的工作,很容易出错。只需对范围内的索引(len(name))执行:
或者更好的是,对枚举中的索引、名称执行(name):
。(或者,也许更好,将整个过程转化为列表理解或genexpr。)另一方面,最好使用带有open('names.txt')的作为名称文件:
,而不是显式的close
,而且。我是个白痴。我不知道我想用循环实现什么,但我删除了它,它按设计工作。\n你不是白痴。你在学习,这是重要的一部分。你不能从成功中学习,你要从错误中学习。要么是你自己的,要么是别人的。@Hyperboreus:你为什么在这个地方加那么多额外的空间?OP正在编写漂亮的PEP8风格代码;鼓励他不要这样做可能不是个好主意。我不喜欢PEP8风格。这就是全部。对不起。但是我考虑了你关于strip
和rstrip
的信息。实际上,我真的不想鼓励任何编码风格。也不赞成或反对任何风格。我只想用我个人喜欢的风格,这不管用;i
来自哪里?(还有,为什么要在没有分号或不需要分号的代码中添加额外的分号呢?)。我会纠正这个答案,Jocke,你可能想看看这里:@Hyperboreus是的,我知道什么是列表理解,以及如何使用它们。但我并没有用python来说明何时实际使用它们。Haskell中也有列表理解,而且很少使用。