Python读取文件夹下多个文件,却不是按数字标号从小到大的顺序读取的解决办法

今天遇到了用Python来进行批量读取同一个文件夹下的多个文件却不是按照从小到大的顺序读取的,出现了下面这样的情况:
在这里插入图片描述
发现没?读取的文件顺序是乱的,不是我们想要的从小到大这样的顺序,即原文件这样:
在这里插入图片描述
后来掌柜查阅一番后再思考了一下,发现它之所以会出现“乱序”是因为使用默认ASCII的字符串排序方式。就是如果前面都一样,那么就看下一位;所以这里除开’user_'后,它就按照先看后面数字的第一位来排,第一位看完再看第二位,然后就得到了一开始那样的排序结果。。。所以解决办法就是要把它改成按数字来排序的方式即可得到👆图这样的结果。

下面就直接上代码了:

import os

path = 'E:/user_gender'
fileslist = os.listdir(path)
#先定义一个排序的空列表
sort_num_list = []
for file in fileslist:
    sort_num_list.append(int(file.split('user_')[1].split('.sql')[0])) #去掉前面的字符串和下划线以及后缀,只留下数字并转换为整数方便后面排序
    sort_num_list.sort() #然后再重新排序
    
#print(sort_num_list)
#接着再重新排序读取文件
sorted_file = []
for sort_num in sort_num_list:
    for file in fileslist:
        if str(sort_num) == file.split('user_')[1].split('.sql')[0]:
            sorted_file.append(file)
            
#print(sorted_file)
for i in sorted_file:
    file = path + '/' + i
    print(file)

重新再次读取文件就可以得到我们想要的从小到大的排序结果:
在这里插入图片描述

参考资料:
python 顺序读取文件夹下面的文件(自定义排序方式)

### 回答1: 可以使用Python内置的os和os.path模块来读取一个文件夹下的多个文件。具体步骤如下: 1. 首先需要导入os模块。 2. 使用os模块的listdir函数来获取指定文件夹下的所有文件文件夹的名称,这个函数返回一个包含所有文件文件夹名称的列表。 3. 遍历这个列表,如果某个名称是文件,则打开这个文件进行读取。 下面是一个简单的示例代码: ```python import os folder_path = '/path/to/folder' files = os.listdir(folder_path) for file in files: if os.path.isfile(os.path.join(folder_path, file)): with open(os.path.join(folder_path, file), 'r') as f: # 这里进行文件读取的操作,比如打印文件内容 print(f.read()) ``` 这段代码会打开指定文件夹下的所有文件,并打印出文件内容。需要注意的是,在使用os.path.join函数拼接文件路径时,需要使用斜杠(/)而不是反斜杠(\),因为在Unix系统和Windows系统中,路径分隔符是不同的。 ### 回答2: 在Python中,要读取一个文件夹下的多个文件,可以使用os模块和glob模块来实现。具体步骤如下: 1. 首先,导入os和glob模块: ```python import os import glob ``` 2. 使用glob模块的glob函数来获取文件夹下的所有文件路径: ```python file_paths = glob.glob("文件夹路径/*") ``` 这里的"文件夹路径"是指要读取文件夹的路径,可以根据实际情况修改。 3. 通过循环遍历file_paths列表,逐个读取文件内容: ```python for file_path in file_paths: with open(file_path, 'r') as file: content = file.read() # 对读取到的文件内容进行处理 ``` 这里的file_path是文件的路径,可以通过open函数打开文件读取内容,并保存到content变量中。在这个循环中,你可以对读取到的内容进行处理或分析,根据具体需求进行操作。 总结:以上就是使用Python读取一个文件夹下的多个文件的步骤。通过使用os模块和glob模块,我们可以轻松地获取文件夹下的所有文件路径,并通过循环遍历来读取文件的内容。 ### 回答3: 在Python中,可以使用os模块来读取一个文件夹下的多个文件。具体步骤如下: 1. 首先导入os模块: ``` import os ``` 2. 使用os模块的listdir函数来获取文件夹下的所有文件名: ``` file_folder = '文件夹路径' file_list = os.listdir(file_folder) ``` 注意,将'文件夹路径'替换为你要读取文件夹的实际路径。 3. 使用循环遍历文件列表,逐个读取文件: ``` for file_name in file_list: file_path = os.path.join(file_folder, file_name) # 拼接文件路径 with open(file_path, 'r') as file: content = file.read() # 读取文件内容 # 处理文件内容 print(content) ``` 上述代码中,使用os模块的join函数将文件夹路径和文件名拼接起来,形成完整的文件路径。然后使用open函数打开文件,并使用'rb'或'r'模式来读取文件内容,以字符串形式保存到变量content中。可以根据实际需求对文件内容进行进一步处理。 4. 循环内的处理代码可以根据具体需求定制,例如可以将文件内容存储到列表或字典中,或进行其他操作。 以上就是使用Python读取一个文件夹下的多个文件的基本步骤。需要注意的是,传递给listdir函数的文件夹路径应为绝对路径或相对于当前代码文件的相对路径。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值