1

在python中,如果要打开所有以“apl_”开头的文件,只需打开“apl*”即可。你如何在 C++ 中做类似的事情。

假设我有一个文件,我知道它以“llll”开头,但有未知的后缀。我该如何打开它?

4

2 回答 2

2
  1. 打开目录
  2. 遍历目录中的文件列表
  3. 打开名称与您的模式匹配的文件。

C:如何获取Windows目录下的文件列表?

于 2012-07-13T00:34:03.480 回答
2

您不能只在 Python 中“简单地打开“apl*””。如果你试试这个:

open("apl*")

你会得到一个 IOError——除非你碰巧有一个文件名是“apl*”。

在 Python 中有两种基本方法可以做到这一点,这两种方法都可以翻译成 C++。

第一的:

[open(f) for f in glob.glob("apl*")]

在大多数非 Windows 平台上,glob.glob直接转换为 POSIX 函数glob。不幸的是,在 Windows 上,它被称为_glob,并不存在于所有版本的 Windows 中,并且有严重的限制。因此,您想使用FindFirstFileFindNextFile。链接页面上给出的示例应该向您展示如何做到这一点。

第二:

[open(f) for f in os.listdir(".") if f.startswith("apl")]

您可以再次使用 FindFirstFile/FindNextFile 来迭代整个目录,然后过滤 data->cFileName 是否以“apl”开头,但您也可以使用更简洁(更便携)的 boost::filesystem: :directory_iterator。

于 2012-07-13T00:41:09.083 回答