python 檢索檔案夾

來源:互聯網
上載者:User
在網上看到了一段python檢索檔案的程式,感覺不錯,模仿著寫了一段,但是發現無法檢索帶有中文的檔案夾。查閱了一些資料後,才知道python(我用的2.6)對中文的支援很麻煩。可是皇天不負有心人,經過一系列的摸索,終於完成了對來源程式的改良,現在,它可以檢索任何檔案夾了。
程式如下:
Code:

#coding:utf-8
#Filename:dir.py

import os
class dir(object):
def __init__(self):
self.count=0
self.space=""
self.list=[]
def p(self,url):
if type(url).__name__!="unicode":
url=unicode(url,"utf-8")
else:
pass
files=os.listdir(url)
for file in files:

myfile=url+"\\"+file
print myfile
size=os.path.getsize(myfile)
if os.path.isfile(myfile):
string=self.space+"|____"+file+str(size)+"\n"
string=string.encode("utf-8")
self.list.append(string)

if os.path.isdir(myfile):
string=self.space+"|____"+file+"\n"
string=string.encode("utf-8")
self.list.append(string)
self.space=self.space+"|"
self.p(myfile)
self.space=self.space[:-5]
return self.list
def writeList(self,url):
f=open(url,'w')
f.writelines(self.list)
print "ok"
f.close()

if __name__=="__main__":
d=dir()
d.p("D:\\張東升\\測試案例管理系統")
d.writeList("d:/python.txt")

在使用os.listdir(url)時,傳入的參數如果有中文漢字,就無法正常使用,原因在於,有漢字時,print type(url) ,這時,可以發現,是<type 'str'>,而listdir()需要傳入的參數類型應該是 <type 'unicode'>,所以,在p(self,url)的最開始,先進行一次轉化。轉化時,先判斷傳入的參數是不是<type 'unicode'>,如果不是,才轉化,否則會出錯。
另外f.writelines(self.list)時,list列表中的元素必須是str類型的,但是經過 string=self.space+"|____"+file+str(size)+"\n"後,string的編碼類別型為unicode,原因在於file的編碼類別型是unicode,其他三個會在執行+操作時自動轉換,所以需要在轉化為str類型。
說起來很拗口,因為我也搞不清楚這些個類型之間的關係,但不管怎樣,總算是可以運行了。

from:http://www.testwo.com/space-1824-do-blog-id-3267.html
=============================
其實os.listdir(path),path只接受str和unicode,如果是unicode,則返回unicode的list;如果是str的則返回str的list(這裡面可能會有不同的編碼,這取決於這個path下是否有不同編碼的檔案或目錄名。換句話說就是返回跟檔案名稱一樣的編碼的str。)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.