python遍历目录就是这么简单

有时我们有列出目录下都有哪些文件和子目录的需求,这种情况是有现成命令可用的,比如windows下的dir命令,linux下的ls命令都可以,那我们用python代码怎么实现呢?

我们利用python丰富的库很容易就能实现一个简易版本,下面我们就用4种方法来实现它。

一、使用os.popen

os.popen工作原理是新建一个子进程,然后用这个子进程执行命令,父进程与子进程间通过管道进行通信。

根据调用popen时的传参,我们可以通过管道读取子进程的输出也可以向子进程写数据,默认是读取子进程的输出。

从以上描述可以看出popen是非常通用的,不是只能用于我们这个例子哦。

那我们开始用它实现我们的需求吧,代码如下:

哈哈,是不是很简单,这种方式虽然能达到目的但其实并不是我们想要的,我们本来就是要实现ls的,结果调用了ls,所以严格意义上来说我们并没有实现ls,那让我们继续往下看其它方法吧,嘿嘿。

二、使用glob.glob

glob可以根据你使用的通配符对文件进行匹配,利用这个特性我们可以列出当前目录下都有哪些文件和子目录,如下代码:

三、使用os.listdir

os.listdir同样可以列出某个目录下都有哪些文件和子目录,如下代码:

四、使用os.walk

os.walk在遍历目录方面非常强大,它不但可以遍历你需要的目录,也可以递归遍历子目录且递归的深度可以用代码控制,下面让我们分别看下怎么遍历整个目录树以及怎么控制深度吧。

os.walk默认是遍历整个目录树的,如下代码就会递归打印出当前目录下所有文件:

那我们怎么控制遍历的深度,比如只遍历n层呢?其实很简单,只需要定义一个深度变量,然后到达n后跳出循环即可,如下代码就只遍历1层:

至此我们已经写完4种方法了,如果你还有其他方法,欢迎评论交流。



  • python閬嶅巻鐩綍灏辨槸杩欎箞绠鍗
    绛旓細浜屻佷娇鐢╣lob.glob glob鍙互鏍规嵁浣犱娇鐢ㄧ殑閫氶厤绗﹀鏂囦欢杩涜鍖归厤锛屽埄鐢ㄨ繖涓壒鎬ф垜浠彲浠ュ垪鍑哄綋鍓嶇洰褰曚笅閮芥湁鍝簺鏂囦欢鍜屽瓙鐩綍锛屽涓嬩唬鐮侊細涓夈佷娇鐢╫s.listdir os.listdir鍚屾牱鍙互鍒楀嚭鏌愪釜鐩綍涓嬮兘鏈夊摢浜涙枃浠跺拰瀛愮洰褰曪紝濡備笅浠g爜锛氬洓銆佷娇鐢╫s.walk os.walk鍦閬嶅巻鐩綍鏂归潰闈炲父寮哄ぇ锛屽畠涓嶄絾鍙互閬嶅巻浣犻渶瑕佺殑鐩綍锛屼篃...
  • python 閬嶅巻鍒楄〃
    绛旓細鍦python涓閬嶅巻鍒楄〃鍙互鐢ㄥ埌for寰幆锛屼娇鐢╢or寰幆閬嶅巻鍒楄〃鏈変笁绉嶆瘮杈冨父瑙佺殑鏂规硶锛屽嵆浣跨敤for寰幆绠鍗曠粨鏋勯亶鍘嗐佽繍鐢╮ange锛堬級鍜 len锛堬級鍑芥暟閬嶅巻銆佽繍鐢╡numerate锛堬級鍑芥暟閬嶅巻銆傚弬鑰冿細1銆佷娇鐢╢or寰幆绠鍗曠粨鏋勯亶鍘 鍙互鐩存帴浣跨敤绠鍗曠殑for寰幆缁撴瀯[ for i in list: print(list) ]閬嶅巻锛岀ず渚嬩唬鐮佷负锛歠orcityincit...
  • Python涓濡備綍閬嶅巻鎸囧畾鐩綍涓嬬殑鎵鏈夋枃浠?
    绛旓細渚嬪锛氬湪C:\TDDOWNLOAD鐩綍涓嬫湁a.txt銆乥.txt涓や釜鏂囦欢锛屽彟鏈塡sub1瀛愭枃浠跺す锛孋:\TDDOWNLOAD\sub1涓嬪張鏈塩.txt銆乨.txt涓や釜鏂囦欢銆1.os.walk os.walk()杩斿洖涓涓笁鍏冪礌鐨則uple锛氬綋鍓嶈矾寰勩佸瓙鏂囦欢澶瑰悕绉般佹枃浠跺垪琛ㄣ>>> import os >>> def fun(path ):...for root,dirs,files in os.walk(pat...
  • python,濡備綍閬嶅巻涓涓鐩綍,杈撳嚭鎵鏈夋枃浠跺悕
    绛旓細import osdef iterbrowse(path): for home, dirs, files in os.walk(path): for filename in files: yield os.path.join(home, filename)for fullname in iterbrowse("/home/bruce"): print fullname
  • 涓句緥璁茶В濡備綍鍦Python缂栫▼涓繘琛岃凯浠e拰閬嶅巻
    绛旓細杩唬棣栧厛鐞嗚В涓嬩粈涔堟槸杩唬,python涓鎵鏈変粠宸﹀線鍙虫壂闈㈠璞$殑鏂瑰紡閮芥槸鍙凯浠g殑鏈夊摢浜涙柟寮忔槸鍙凯浠g殑:1.鏂囦欢鎿嶄綔 鎴戜滑璇诲彇鏂囦欢鐨勬椂鍊,浼氱敤鍒颁竴涓猺eadline()鏂规硶,鍏跺疄瀹灏辨槸涓涓凯浠e櫒锛屽畠浼氳繑鍥炲綋鍓嶇殑鏁版嵁,鐒跺悗鑷姩鐨勮皟鐢ㄥ唴缃殑next()鏂规硶鏉ヨ鏂囦欢鐨勮鍙栧ご鑷姩鐨勭Щ鍔ㄥ埌褰撳墠鐨勪笅闈竴琛,鍑嗗涓嬫鐨勮鍙,鍒拌揪...
  • python os.walk
    绛旓細os.walk鏄睘浜python涓嬬殑涓涓柟娉曪紝os.walk锛堬級鏂规硶涓鑸槸鐢ㄦ潵閫氳繃鍦ㄧ洰褰曟爲涓父璧拌緭鍑哄湪鐩綍涓殑鏂囦欢鍚嶏紝鍚戜笂鎴栨槸鍚戜笅銆傜畝鍗曟潵璇达紝os.walk锛堬級鏂规硶鏄睘浜庝竴涓畝鍗曟槗鐢ㄧ殑鏂囦欢銆鐩綍閬嶅巻鍣紝鑳藉鏇村ソ鍦板府鍔╂垜浠珮鏁堢殑澶勭悊鍚勭鏂囦欢銆佺洰褰曠瓑鏂归潰鐨勪簨鍔°傝娉曟牸寮忥細os.walk(top[, topdown=True[, onerror=...
  • 濡備綍鍒╃敤Python閬嶅巻鏂囦欢澶
    绛旓細import osfor roots, dirs, files in os.walk('.',topdown=True):roots鏄墍鏈夌殑涓婂眰璺緞 dirs鏄墍鏈夌殑鐩綍 files鏄墍鏈夌殑鏂囦欢鍚
  • python鎬庝箞鐢ㄩ掑綊閬嶅巻澶氬眰鐩綍鏍
    绛旓細Python瀹炵幇閫掑綊閬嶅巻鎸囧畾鏂囦欢鐩綍锛坰tartdir锛夛紝浠庤屾壘鍒版墍鏈変笌鎸囧畾鐨勬枃浠舵垨鐩綍锛坱arget锛夊悕鐩稿悓鐨勬枃浠舵垨鐩綍鐨勭粷瀵硅矾寰勩俿candir.py :! /usr/bin/python filename : scandir.py author : Jesse update : 2011/08/15 10:16 import os def scandir(startdir, target) :os.chdir(startdir)for obj in ...
  • python鎬庢牱閬嶅巻.py鐨勫唴瀹?
    绛旓細鏂规硶涓锛氶氳繃for寰幆 li = [i for i in range(10)]for i in li:print(i)鏂规硶浜岋細閫氳繃while寰幆 铏界劧for寰幆宸茬粡寰堝ソ鐢ㄤ簡锛屼絾鏄湪鏈変簺鎯呭喌涓嬶紝浣跨敤while寰幆鍙互鏇寸伒娲 鍙渶瑕佸皢鍒ゆ柇鏉′欢璁剧疆涓哄皬浜庡垪琛ㄩ暱搴︼紝鍗冲彲瀹屾垚鍒楄〃閫氳繃while寰幆鐨閬嶅巻 li = [i for i in range(10)]i = 0 while i <...
  • 姹傞氳繃python瀹炵幇,鍦ㄦ寚瀹鐩綍涓閬嶅巻鎵鏈夋枃浠,灏嗕互.txt涓哄悗缂鐨勬枃浠剁Щ ...
    绛旓細target_dir = 'home/' #鍋囧畾瑕佹嫹璐濆埌home鐩綍 x = [ item for item in os.walk('.') ] #os.walk閫掑綊鍦閬嶅巻鎵鏈夊瓙鏂囦欢澶 杩斿洖鐨勬槸涓涓猯ist锛宭ist涓瘡涓涓厓绱犵敱3涓儴鍒嗭細(path, dirs, files)for path, dirs, files in x:for file in files:if file.endswith('.txt'): #鎵惧埌浠...
  • 扩展阅读:python读取文件目录 ... 什么叫python遍历循环 ... python如何遍历列表 ... python遍历目录下txt文件 ... 行测遍历是什么意思 ... python软件怎么用 ... python遍历循环和无限循环 ... python遍历循环怎么理解 ... python切换目录到指定目录 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网