有没有一种方法可以在不指定完整名称和数量的情况下打开具有相同名称开头的文件?它们应该逐个打开,而不是一次性全部打开。 例如,我有文件: certainstr_123.txt,certainstr_5329764.txt,certainstr_1323852.txt。
或者,也许可以更容易地在其他语言中完成? 谢谢。
boost::filesystem
有通配符搜索,您必须自己过滤文件,但这并不难。i->path().extension()
)和以"certainstr_"开头的文件名(boost::starts_with
或std::string::substr
)即可。libstdc++
。有一些Unix / Windows示例。
您还可以尝试类似以下内容(Windows):
std::system("dir /b certainstr_*.txt > list.txt");
std::system("ls -m1 certainstr_*.txt > list.txt");
[glob.glob('certainstr_*.txt')][3]
files = [f for f in os.listdir('.') if re.match(r'certainstr_\d+.txt', f)]
simple_ls
示例不过滤模式,链接的答案明显是特定于平台的,那些hack...太疯狂了)。提到Python是...好吧,我猜OP就是要求这个:/ - sehe我建议使用正则表达式。伪代码:
boost::regex reg("^certainstr_\\d+.txt$");
for(recursive_directory_iterator it("."); it != recursive_directory_iterator(); ++it)
{
if(boost::regex_search(it->string(), reg))
{
cout << *it << endl;
}
}