如何在子目录中搜索特定文件?

时间:2020-08-02 18:17:13

标签: python

比方说start.py位于C:\中。

import os
path = "C:\\Users\\Downloads\\00005.tex"
file = open(path,"a+")
file. truncate(0)
file.write("""Hello
        """)
file.close()
os.startfile("C:\\Users\\Downloads\\00005.tex")

在子目录中可能有一些文件。例如:00001.tex,00002.tex,00003.tex,00004.tex。 我想首先在子目录中搜索编号最大的文件(00004.tex),并用下一个编号(00005.tex)创建一个新文件,写“ Hello”并将其保存在子目录00​​005.tex中。 br /> 零是必要的还是我也可以仅将它们命名为1.tex,2.tex,3.tex ......?

2 个答案:

答案 0 :(得分:1)

从字面上看,“ 2”大于“ 100”,但在数值上当然相反。将文件写为“ 00002.txt”和“ 00100.text”的原因是,对于编号高达99999的文件,词法排序与数字排序相同。如果将它们分别写为“ 2.txt”和“ 100.txt”,则需要在排序之前将名称的非扩展部分更改为整数。

在您的情况下,由于需要下一个最大的数字,因此需要将文件名转换为整数,以便获得最大值并加1。由于无论如何都转换为整数,因此,程序无关紧要您可以在零之前加上零。

因此,选择是基于外部原因。有什么理由使文本排序有效吗?如果没有,那么选择纯粹是随机的,并且做您认为更好的事情。

答案 1 :(得分:0)

您可以使用glob:

import glob, os
os.chdir(r"Path")

files = glob.glob("*.tex")
entries = sorted([int(entry.split(".", 1)[0]) for entry in files])
next_entry = entries[-1]+1

next_entry 可以用作新文件名。然后,您可以使用该名称创建一个新文件,并将新内容写入该文件