以一种非常奇怪的方式读取文本文件

jobtbby3  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(281)

此问题已在此处找到答案

来自os.listdir()的非字母数字列表顺序(13个答案)
两天前关门了。
我使用的代码读取给定目录中的每个文本文件:


# Import Module

import os

# Folder Path

path = "Enter Folder Path"

# Change the directory

os.chdir(path)

# Read text File

def read_text_file(file_path):
    with open(file_path, 'r') as f:
        print(f.read())

# iterate through all file

for file in os.listdir():
    # Check whether file is in text format or not
    if file.endswith(".txt"):
        file_path = f"{path}\{file}"

        # call read text file function
        read_text_file(file_path)

问题是,它不是按时间顺序读取每个数据文件(data1.txt、data2.txt、data3.txt等),而是以一种非常奇怪的方式读取每个文件(data1.txt、data10.txt、data101.txt、data2.txt等)。
它为什么要这样做,我该怎么解决?

0vvn1miw

0vvn1miw1#

如果需要特定订单,请使用此选项:

for root, dirs, files in os.walk(path):
   for file in sorted(files):
        print(file)
rjzwgtxy

rjzwgtxy2#

python文档没有对文件返回的顺序进行任何区分。更糟糕的是,它可能因实现和操作系统的不同而有所不同。
如果要确保文件按时间顺序排列,可以使用 os.lstat 在每个文件上。

sorted_list_of_files_by_modify_date = sorted(os.listdir(), key= lambda x: os.lstat(x).st_mtime)

相关问题