2016-07-22 43 views
3

我想让我的python脚本读取带有扩展名的文件名列表的文本文件,并在找到特定的扩展名时打印出来(.txt文件准确)。它读取文件并遍历每一行(我已经通过在for语句之后放置一个简单的“打印行”进行了测试),但在行中看到“.txt”时没有做任何事情。为了避免这个显而易见的问题,是的,我确信列表中有.txt文件。有人能指引我朝着正确的方向吗?使用endswith读取列表中的文件没有在列表中找到扩展名

with open ("file_list.txt", "r") as L: 
for line in L: 
    if line.endswith(".txt"): 
     print ("This has a .txt: " + line) 
+3

尝试'line.strip()的endsWith(” TXT“)' –

回答

4

每行以新行字符'\n'结尾,以便测试正确失败。所以,你应该先strip行再测试:

line.rstrip().endswith('.txt') 
# ^
+0

是这并我不能相信我忘记了这个新行字符,我不能将它标记为答案,但我会 – DarkKnight4251

1

使用str.rstrip删除尾部空格,如\n\r\n

with open ("file_list.txt", "r") as L: 
    for line in L: 
     if line.rstrip().endswith(".txt"): 
      print ("This has a .txt: " + line) 
+1

这正是我所需要的,谢谢! – DarkKnight4251

3

我想你应该在延长的末尾添加底线标志\n:!

with open ("file_list.txt", "r") as L: 
for line in L: 
    if line.endswith(".txt\n"): 
     print ("This has a .txt: " + line) 
+1

如果行后面有一个空格, .txt'',如'line ='my_test.txt \ n''? –

+0

这也行。谢谢! – DarkKnight4251

+1

@MosesKoledoye,如果该行在'.t后面有一个笑脸XT“?这不是一个正常的情况。 –

相关问题