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

Posted

技术标签:

【中文标题】如何在子目录中搜索特定文件?【英文标题】:How can I search in a subdir for a specific file? 【发布时间】:2020-08-02 18:17:13 【问题描述】:

假设 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中。 零是必要的还是我也可以将它们命名为 1.tex、2.tex、3.tex......?

【问题讨论】:

看看这是否回答了您的问题***.com/questions/3207219/…。将文件名放入列表后,您可以找到列表的最大值,然后将其加一并创建新文件并存储它们。 如果要按字典顺序对它们进行排序,则零是必需的,否则 11.tex 会在 2.tex 之前。这取决于您如何实施例程以找到最高数字 【参考方案1】:

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

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

所以选择是基于外部原因。有什么理由使它可以进行文本排序吗?如果不是,那么选择纯粹是随机的,做任何你认为更好看的事情。

【讨论】:

【参考方案2】:

你可以使用 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 可以用作新文件名。然后,您可以使用此名称创建一个新文件并将您的新内容写入该文件

【讨论】:

我更新了答案。还请考虑以下来自@tdelaney 的帖子

以上是关于如何在子目录中搜索特定文件?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript,Nodejs:在文件中搜索特定的单词字符串

如何在当前文件夹和所有子文件夹中的所有文件中搜索特定文件内容[重复]

如何在jtree中搜索特定节点并使该节点展开。?

如何在 DataTable 中搜索特定记录?

如何在Lucene中搜索特定范围内的词

Erlang - 在外部文件中搜索特定字符串,如果不存在则追加文件