如何在子目录中搜索特定文件?
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”并将其保存在子目录00005.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:在文件中搜索特定的单词字符串