我正在尝试使用通配符搜索,在桌面上搜索以start = time.time()
# some code goes here
end = time.time()
spent = end - start
time.sleep(1.0101 - spent) # this gives a strange IOError...
结尾的任何内容。
我有这个(ExcelToDataTable)接受test
作为参数:
string
然后我的方法用我试图从test命名的表中提取的数据做了一些事情:
ExcelToDataTable(@"C:\Users\name\Desktop\*test.xls");
所以我的问题是,在我提供的示例中,有没有办法使用通配符并将其提供到我的public static DataTable ExcelToDataTable(string filePath)
{
DataTable dt = new DataTable();
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
}
}
方法中?我想在我的桌面上找到最后有ExcelToDataTable
字样的每个.xls文件...
由于
答案 0 :(得分:2)
我会制作一种新方法,"一级升级"接受目录路径,查找其中的所有xls文件,并将它们传递给列表中的方法。
public static List<DataTable> ProcessDataTables(string dirPath)
{
xlsFiles = System.IO.Directory.GetFiles(dirPath, "*test.xls")
var results = new List<DataTable>
foreach(var file in xlsFiles)
results.Append(ExcelToDataTable(file))
return results
}
你应该考虑在那里进行一些健全性检查(比如检查dirPath
实际上是一个存在的目录的路径,调用它的任何东西都可以,如果没有xls文件,则将空列表作为返回值存在等等。)
一般来说,使用Environment.SpecialFolder.Desktop
代替硬编码&#34;您的&#34;也是最佳做法。桌面。
答案 1 :(得分:0)
您可以执行以下操作,例如我可以说我想找到以.jpg and .txt
结尾的文件我可以执行以下操作
var fi = new System.IO.DirectoryInfo(sDir).GetFiles().
Where(f => !(f.FullName.EndsWith(".jpg") || f.Name.EndsWith(".txt"))).ToArray();
如果您要查找以.text
分机结尾的文件,请执行以下操作
var fi = new System.IO.DirectoryInfo(sDir).GetFiles().
Where(f => !(f.FullName.EndsWith(".text") || f.Name.EndsWith(".Text"))).ToArray();
您还可以对以下C# Linq Directory.EnumerateFiles()
方法