當前位置:首頁 » 文件管理 » 遞歸遍歷目錄解壓文件

遞歸遍歷目錄解壓文件

發布時間: 2023-08-12 15:12:22

python怎麼用遞歸遍歷多層目錄樹

#coding=utf-8
search_id = '69d0'
search_list = [{'id':'0337', 'name':'de', 'parent_id':'None'},
{'id':'2ddf', 'name':'se', 'parent_id':'None'},
{'id':'3010', 'name':'12', 'parent_id':'69d0'},
{'id':'3119', 'name':'121', 'parent_id':'3010'},
{'id':'3229', 'name':'1211', 'parent_id':'3119'},
{'id':'3d37', 'name':'14', 'parent_id':'69d0'},
{'id':'58c8', 'name':'11', 'parent_id':'69d0'},
{'id':'63b9', 'name':'a','parent_id':'None'},
{'id':'954c', 'name':'n', 'parent_id':'63b9'},
{'id':'69d0', 'name':'1', 'parent_id':'954c'},
{'id':'d2f9', 'name':'13', 'parent_id':'69d0'},
{'id':'defb', 'name':'test', 'parent_id':'None'}]
search_ids = []
#例如如果search_id = '69d0' search_ids=[3010,3d37,58c8,d2f9,3119,3229]

def search_pid(pid,id_list,id_results):
for id in id_list:
if id['id'] not in id_results:
if id['parent_id'] in pid:
id_results.append(id['id'])
pid.append(id['id'])
search_pid(pid,id_list,id_results)

search_pid([search_id],search_list,search_ids)
print search_ids

⑵ Python中如何遍歷指定目錄下的所有文件

例如:在C:\TDDOWNLOAD目錄下有a.txt、b.txt兩個文件,另有\sub1子文件夾,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt兩個文件。
1.
os.walk
os.walk()返回一個三元素的tuple:當前路徑、子文件夾名稱、文件列表。>>>
import
os>>>
def
fun(
path
):...
for
root,
dirs,
files
in
os.walk(
path
):...
for
fn
in
files:...
print
root,
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD
a.txtC:\TDDOWNLOAD
b.txtC:\TDDOWNLOAD\sub1
c.txtC:\TDDOWNLOAD\sub1
d.txt>>>
2.
glob.glob
glob.glob()只接受一個參數,這個參數既代有路徑,又代有匹配模式,返回值為一個列表。注意,glob.glob()無法直接穿透子文件夾,需要自己處理:>>>
def
fun(
path
):...
for
fn
in
glob.glob(
path
+
os.sep
+
'*'
):
#
'*'代表匹配所有文件...
if
os.path.isdir(
fn
):
#
如果結果為文件夾...
fun(
fn
)
#
遞歸...
else:...
print
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt>>>
'*'為匹配模式,代表匹配所有文件,只有這樣才能將子文件夾查出來,以便遞歸深入,探查下一層的文件。

linux zip壓縮。壓縮當前文件夾下所有文件,壓縮為a.zip。命令行的方法是怎樣。

linux zip壓縮。壓縮當前文件夾下所有文件,壓縮為a.zip。可以使用命令zip -r mydata.zip dir。例如:

要壓縮/home/data這個目錄,則壓縮命令為zip -q -r mydata.zip /home/data;

如果現在在/home 這個目錄下,則命令是zip -q -r data.zip data;

如果在/home/data 這個目錄下,則命令是zip -q -r data.zip * 。

(3)遞歸遍歷目錄解壓文件擴展閱讀

linux zip壓縮命令主要參數介紹:

1、-c:將解壓縮的結果。

2、-l:顯示壓縮文件內所包含的文件。

3、-p:與-c參數類似,會將解壓縮的結果顯示到屏幕上,但不會執行任何的轉換。

4、-t:檢查壓縮文件是否正確。

5、-u:與-f參數類似,但是除了更新現有的文件外,也會將壓縮文件中的其它文件解壓縮到目錄中。

6、-v:執行是時顯示詳細的信息。

7、-z:僅顯示壓縮文件的備注文字。

8、-a:對文本文件進行必要的字元轉換。

9、-b:不要對文本文件進行字元轉換。

10、-C:壓縮文件中的文件名稱區分大小寫。

⑷ 使用java遞歸方法遍歷指定目錄下所有子目錄和子文件

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
* 讀取目錄及子目錄下指定文件名的路徑 並放到一個數組裡面返回遍歷
* @author zdz8207
*
*/
public class FileViewer {
public static void main(String[] args) {
//List arrayList = FileViewer.getListFiles("d:/com","html",true);

//讀取d:/com下的以java 結尾的文件 如有子目錄,包含之(後綴名為null則為所有文件)
//List arrayList = FileViewer.getListFiles("d:/com","java",true);

//經試驗,後綴不能不填寫,否則編譯不通過,提示「FileViewer.java:17: 非法的表達式開始」。
//另外後綴為""時的情況需要 增加到IF 里去,否則 後綴為""時,不會顯示所有文件
List arrayList = FileViewer.getListFiles("d:/com","",true);
if(arrayList.isEmpty())
{
System.out.println("沒有符號要求的文件");
}
else
{
String message = "";
message += "符號要求的文件數:" + arrayList.size() + "\r\n";
System.out.println(message);

for (Iterator i = arrayList.iterator(); i.hasNext();)
{
String temp = (String) i.next();
System.out.println(temp);
message += temp + "\r\n";
}
//將顯示的文件路徑寫到指定的文件里,若文件不存在,則提示IO異常
//java.io.FileNotFoundException: d:\ajax\menu.txt (系統找不到指定的路徑。)
//如果 加個文件是否存在的判斷,如不存在就在當前目錄新建一個,則更好。
appendMethod("d:/menu.txt",message);
}
}
public static List<String> fileList = new ArrayList<String>();

/**
*
* @param path 文件路徑
* @param suffix 後綴名
* @param isdepth 是否遍歷子目錄
* @return
*/
public static List getListFiles(String path, String suffix, boolean isdepth)
{
File file = new File(path);
return FileViewer.listFile(file ,suffix, isdepth);
}

public static List listFile(File f, String suffix, boolean isdepth)
{
//是目錄,同時需要遍歷子目錄
if (f.isDirectory() && isdepth == true)
{
File[] t = f.listFiles();
for (int i = 0; i < t.length; i++)
{
listFile(t[i], suffix, isdepth);
}
}
else
{
String filePath = f.getAbsolutePath();

System.out.println("suffix = "+suffix);
if(suffix =="" || suffix == null)
{
//後綴名為null則為所有文件
System.out.println("----------------");
fileList.add(filePath);
}
else
{
int begIndex = filePath.lastIndexOf(".");//最後一個.(即後綴名前面的.)的索引
String tempsuffix = "";

if(begIndex != -1)//防止是文件但卻沒有後綴名結束的文件
{
tempsuffix = filePath.substring(begIndex + 1, filePath.length());
}

if(tempsuffix.equals(suffix))
{
fileList.add(filePath);
}
System.out.println("|||||||||||||||||||");
}

}

return fileList;
}

/**
* 方法追加文件:使用FileWriter
* @param fileName
* @param content
*/
public static void appendMethod(String fileName, String content)
{
try
{
//打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content + "\r\n");
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:429
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:554
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:740
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:533
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:143
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:229
java駝峰 發布:2025-02-02 09:13:26 瀏覽:648
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:529
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:209
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:723