1. 如何用Python os.path.walk方法遍歷搜索文件內容的操作詳解
本文是關於如何用Python os.path.walk方法遍歷搜索文件目錄內容的操作詳解的文章,python 代碼中用os.path.walk函數這個python模塊的方法來遍歷文件,python列出文件夾下的所有文件並找到自己想要的內容。
文中使用到了Python os模塊和Python sys模塊,這兩個模塊具體的使用方法請參考玩蛇網相關文章閱讀。
Python os.path.walk方法遍歷文件搜索內容方法代碼如下:
?
041
import os, sys#代碼中需要用到的方法模塊導入 listonly = False skipexts = ['.gif', '.exe', '.pyc', '.o', '.a','.dll','.lib','.pdb','.mdb'] # ignore binary files def visitfile(fname, searchKey): global fcount, vcount try: if not listonly: if os.path.splitext(fname)[1] in skipexts: pass elif open(fname).read().find(searchKey) != -1: print'%s has %s' % (fname, searchKey) fcount += 1 except: pass vcount += 1 #www.iplaypy.com def visitor(args, directoryName,filesInDirectory): for fname in filesInDirectory: fpath = os.path.join(directoryName, fname) if not os.path.isdir(fpath): visitfile(fpath,args) def searcher(startdir, searchkey): global fcount, vcount fcount = vcount = 0 os.path.walk(startdir, visitor, searchkey) if __name__ == '__main__': root=raw_input("type root directory:") key=raw_input("type key:") searcher(root,key) print 'Found in %d files, visited %d' % (fcount, vcount)
2. java怎麼循環讀取目錄下的文件內容
JAVA 遍歷文件夾下的所有文件(遞歸調用和非遞歸調用)
1.不使用遞歸的方法調用。
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
list.add(file2);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
list.add(file2);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夾共有:" + folderNum + ",文件共有:" + fileNum);
}
2.使用遞歸的方法調用
public static List<File> getFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles(); // 該文件目錄下文件全部放入數組
if (files != null) {
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getName();
if (files[i].isDirectory()) { // 判斷是文件還是文件夾
getFileList(files[i].getAbsolutePath()); // 獲取文件絕對路徑
} else if (fileName.endsWith("avi")) { // 判斷文件名是否以.avi結尾
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
filelist.add(files[i]);
} else {
continue;
}
}
}
return filelist;
}
3. 批處理怎麼遍歷指定文件夾中所有文件的路徑、文件名及首行內容,放入臨時文件中
把下面的文件存為search1ln.bat,內容如下:
@echooff
@
ifexistaa.txtdelaa.txt
for/f"delims="%%iin('dir%1\%2/s/b/a-d')do(
setfn=%%i
set/pln1=<"%%i"
echo!fn!!ln1!>>aa.txt
)
把上面的文件放在任意文件夾中,運行時,需要進入cmd環境中,在該bat路徑下,輸入:
search1ln.bat d:mydir *.log
其中d:mydir一定要是絕對路徑,您可以自己換,如果路徑中有空格就用雙引號引起來,*.log您也可以自己改。
輸出結果在aa.txt中,每次執行都會把aa.txt刪了,再生成新的。
4. 請教C語言如何遍歷文本文件,比較取得其中想要的內容(高分懸賞)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
FILE *pf;
char pl[513],*pw;
char sp[]="/,";
int i;
double min=1e30, d;
pf=fopen("cls-2.cls","r");
if(!pf){
printf("打開文件時出錯\n");
return 1;
}
while(fgets(pl,512,pf)!=0){
strlwr(pl); //將字元串pl中的字母變為小寫
pw=strtok(pl,sp); //提前字元串pl中的首個單詞
if(strcmp(pw,"goto")!=0) continue;
for(i=0; i<3; i++)
pw=strtok(0,sp); //提取GOTO之後的第三個數字
d=atof(pw);
if(d<min) min=d;
}
printf("min=%.6lf\n",min);
fclose(pf);
return 0;
}
5. vba讀取excel遍歷文件指定數據
Excel文件格式一致,匯總求和,其他需求自行變通容
匯總使用了字典
Public d
Sub 按鈕1_Click()
Application.ScreenUpdating = False
ActiveSheet.UsedRange.ClearContents
Cells(1, 1) = "編號"
Cells(1, 2) = "數量"
Set d = CreateObject("scripting.dictionary")
Getfd (ThisWorkbook.Path) 'ThisWorkbook.Path是當前代碼文件所在路徑,路徑名可以根據需求修改
Application.ScreenUpdating = True
If d.Count > 0 Then
ThisWorkbook.Sheets(1).[a2].Resize(d.Count) = WorksheetFunction.Transpose(d.keys)
ThisWorkbook.Sheets(1).[b2].Resize(d.Count) = WorksheetFunction.Transpose(d.items)
End If
End Sub
Sub Getfd(ByVal pth)
Set Fso = CreateObject("scripting.filesystemobject")
Set ff = Fso.getfolder(pth)
For Each f In ff.Files
Rem 具體提取哪類文件,還是需要根據文件擴展名進行處理
If InStr(Split(f.Name, ".")(UBound(Split(f.Name, "."))), "xl") > 0 Then
If f.Name <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(f)
For Each sht In wb.Sheets
If WorksheetFunction.CountA(sht.UsedRange) > 1 Then
arr = sht.UsedRange
For j = 2 To UBound(arr)
d(arr(j, 1)) = d(arr(j, 1)) + arr(j, 2)
Next j
End If
Next sht
wb.Close False
End If
End If
Next f
For Each fd In ff.subfolders
Getfd (fd)
Next fd
End Sub