当前位置: 首页 > 面试题库 >

在python中以特定顺序读取文件

慕宏儒
2023-03-14
问题内容

可以说我在一个文件夹中有三个文件:file9.txt,file10.txt和file11.txt,我想按此特定顺序读取它们。谁能帮我这个?

现在我正在使用代码

import glob, os
for infile in glob.glob(os.path.join( '*.txt')):
    print "Current File Being Processed is: " + infile

它先读取file10.txt,然后读取file11.txt,然后读取file9.txt。

有人可以帮助我如何获得正确的订单吗?


问题答案:

文件系统上的文件未排序。您可以使用sorted()函数自己对生成的文件名进行排序:

for infile in sorted(glob.glob('*.txt')):
    print "Current File Being Processed is: " + infile

请注意,os.path.join您代码中的调用是无操作的;仅带有一个参数,它什么也不会做,只会使该参数保持不变。

请注意,您的文件将按字母顺序排序,该顺序位于10之前9。您可以使用自定义键功能来改善排序:

import re
numbers = re.compile(r'(\d+)')
def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts

 for infile in sorted(glob.glob('*.txt'), key=numericalSort):
    print "Current File Being Processed is: " + infile

numericalSort函数将文件名中的所有数字分开,将其转换为实际数字,然后返回结果进行排序:

>>> files = ['file9.txt', 'file10.txt', 'file11.txt', '32foo9.txt', '32foo10.txt']
>>> sorted(files)
['32foo10.txt', '32foo9.txt', 'file10.txt', 'file11.txt', 'file9.txt']
>>> sorted(files, key=numericalSort)
['32foo9.txt', '32foo10.txt', 'file9.txt', 'file10.txt', 'file11.txt']


 类似资料:
  • 问题内容: 如何使用python以相反的顺序读取文件?我想从最后一行读取文件。 问题答案: 在Python 3中:

  • 第一次使用python。我正在尝试浏览包含段落和表格的word文档。我已经弄清楚了如何使用以下代码浏览文档中的所有段落和文档中的所有表格: 但我正试图找到一种方法,像任何阅读它的人一样,有序地浏览这份文件。所以如果我们有一份文件包含: 它会按照这个顺序读。我想这样做的原因是,根据表格后面的段落,我想对它执行不同的操作。

  • 问题内容: 我不是在谈论特定的行号,因为我正在读取具有相同格式但长度不同的多个文件。 说我有这个文本文件: 我希望你知道我的意思。我正在考虑遍历文件,然后使用正则表达式搜索以找到“开始”和“结束”的行号,然后使用线缓存从开始行读取到结束行。但是如何获得行号?我可以使用什么功能? 问题答案: 如果您只想要和之间的文本块,则可以执行以下操作: 实际上,您不需要操纵行号即可读取开始和结束标记之间的数据。

  • 问题内容: 我有一个文本文件,其中包含一个由数字组成的表格,例如: 5 10 6 6 20 1 7 30 4 8 40 3 9 23 1 4 13 6 例如,如果我想要仅包含在第二列中的数字,我该如何将该列提取到列表中? 问题答案: 您可以使用列表理解来做同样的事情 Docs 返回字符串的单词列表。如果不存在可选的第二个参数sep或“无”,则单词将由任意的空白字符字符串(空格,制表符,换行符,返回

  • 问题内容: 我有一个Java ee应用程序,在该应用程序中,我使用servlet来打印使用log4j创建的日志文件。在读取日志文件时,通常会寻找最后一个日志行,因此,如果servlet以相反的顺序打印日志文件,则它会更加有用。我的实际代码是: 我在互联网上找到的实现涉及使用StringBuffer并在打印之前加载所有文件,难道没有找到找到文件结尾并读取内容直到文件开头的代码轻巧的方式吗? 问题答案

  • 问题内容: 给定一个大文件(数百MB),我将如何使用Python快速读取文件中特定起始索引和结束索引之间的内容? 本质上,我正在寻找一种更有效的方法: 问题答案: 您可以将文件放入文件,然后从那里读取一定数量。Seek允许您获取文件中的特定偏移量,然后可以将读取限制为该范围内的字节数。 那只会读取您要查找的数据。