由于项目需求,需要生成文件夹下的所有文件的目录名称,并且名称需要与原本的文件夹中排好序的名称相对应。这个遍历所有的名称,并且遍历,其实用Python非常好解决,所以首先就想到使用Python进行操作。
Python
进行文件夹中所有的文件名的列出,以及对应子文件夹内部的文件名输出,具体代码如下:
import os
file_dir = 'D:\...'
file_list = list()
for root,dirs,files in os.walk(file_dir):
for filespath in files:
file_list.append(os.path.join(root, filespath))
最后所有的内容全部存储在列表file_list
中。然后需要进行Excel两种格式(csv与xlsx)的表格的输出,其代码如下:
import pandas as pd
file_csv = pd.DataFrame(file_list, columns=['path'])
file_csv.to_csv("../image_path.csv", index=False)
file_csv.to_excel("../image_path.xlsx", index=False)
这样我们就将一个目录下的文件名,以及对应子文件夹中的子文件面全部进行生成。
但是!这么做完发现,在Windows系统中,其输出结果与对应按照名称排序的结果,是不一致的!于是想分析一下原因,就打开了命令行操作(先快捷键:WIN + R
,然后输入:cmd
,即可在Windows下进入命令行)。
在命令行的对应路径中输入dir
即可查看对应路径下的所有文件名称。发现与Python输出的所有名称顺序完全一致,也是与Window中的默认排序不一致。
然后由于任务的需要,于是乎查了网上很多的解决的方式,并且尝试模仿解决,均已失败告终。接着想到了另一种排序方式,就是不按照原本的名称顺序进行排序,而是按照后面的时间顺序进行排序。这样的Python也能解决,但是会稍微麻烦一点点。
然后在这里尝试使用Windows中的命令行来尝试解决。
CMD(Command,命令提示符)
想在CMD中输出按时间排序的文件名其实非常简单,只需要使用命令:dir /od
即可输出按照时间排序的文件名称。
而且不仅仅这样,/od
中的d
替换成下面的不同的字母,可以实现不同的功能。
-
n
:按名称的字母顺序 -
e
:按扩展名的字母顺序 -
d
:按日期和时间,最早的优先 -
s
:按大小,最小的优先 -
g
:在文件之前分组的目录
然后我们想通过输出txt文件,而不是仅仅只是在命令行中输出结果。这个其实也比较简单,就在文件目录中新建一个txt文件,然后在里面复制下如下语句:
@echo off
dir /od *.* > 按时间排序文件名.txt
exit
进行储存后,再将后缀名.txt
修改为.bat
,然后再双击这个文件,即可输出按照时间排序的文件名称列表。当然如果想依据其他准则进行排序,则可以将/od
修改为前面所述的其他语句。
最后想将文件名称全部储存在Excel中也非常简单,只需如下几步:
- 将生成排序好的txt文件中所有的内容进行复制,粘贴到新建的一个Excel文件的第一个格子中
- 点击Excel中上面的
数据
按钮,选择分列
。 - 一直点
下一步
到最后的完成
,最后对Excel中的结果保留自己所需的内容即可。
但是!其实这个问题还是没有完全解决,因为如果出现了几个文件的时间完全相同的情况,这几个文件的小顺序还是有可能不一致的,这点非常坑爹需要格外注意。
解决方法还在探索中,希望有大神知道如何操作的多多指点~