1. 如何用python實現目錄遍歷
1. 基本實現
[root@localhost ~]# cat dirfile.py
import os
path='/tmp'
for dirpath,dirnames,filenames in os.walk(path):
for file in filenames:
fullpath=os.path.join(dirpath,file)
print fullpath
執行結果如下:
[root@localhost ~]# python dirfile.py
/tmp/yum.log
/tmp/pulse-3QSA3BbwpQ49/pid
/tmp/pulse-3QSA3BbwpQ49/native
/tmp/.esd-0/socket
2. python:遍歷文件並搜索/讀取
os.walk()
3. 如何用python遍歷文件夾下的所有excel文件
import os
for i in os.listdir("."):
if os.path.splitext(i)[1] == ".xlsx":
print i
4. 求通過python實現,在指定目錄下遍歷所有文件,將以.txt為後綴的文件移動到另一指定目錄中
target_dir = 'home/' #假定要拷貝到home目錄
x = [ item for item in os.walk('.') ] #os.walk遞歸地遍歷所有子文件夾
#返回的是一個list,list中每一個元素由3個部分:(path, dirs, files)
for path, dirs, files in x:
for file in files:
if file.endswith('.txt'): #找到以txt結尾的,之
shutil.( path+os.sep+file , target_dir )
5. python 如何遍歷文件夾里所有的txt文件
PY不會,其它語言我會
6. 請教大神,python遍歷目錄,根據目錄下獲取的文件信息,到其他目錄查找,並記錄到列表
os包的listdir函數可以列出一個文件夾下的所有文件名,返回的是一個列表
importos
filenames=os.listdir('g:\')
可以通過os.path.isfile()函數判斷一個文件是否存在
os.path.isfile('g:meelo.txt')
7. python一般遍歷所有文件需要多久
在互聯網管理、金融、物流等領域,往往離不開數據處理、統計分析等輔助決策的操作。
傳統的商業分析(Business Analysis),定性佔比很大,以相對簡單的數據處理為輔助,人們使用的分析工具主要是Excel;然而,自Excel2007版起,最大支持的工作表大小為16,384 列 × 1,048,576 行,超出最大行列數單元格中的數據將會丟失。
在大數據背景的今天,面對千萬條以上動輒成百上千G的數據,單用excel難免顯得力不從心,越來越多的人將關注點轉向python。
易踩坑!Excel輸給Python
(1)數據量級太大,報表來不及保存,Excel崩潰無響應
比如,工作中經常需要對一個表進行刪除重復值處理,當工作表中格式過於復雜、數據量過於龐大時,Excel在計算時容易報錯崩潰。
而python在數據處理的量級和性能上明顯高於excel,對python來說,只需調用drop_plicates方法就可以輕松處理大批量數據,無需擔心軟體崩潰異常退出。
Python的處理方法如下:
調用方法:
DataFrame.drop_plicates(subset=None,keep='first', inplace=False)
————————————————
參數說明:
subset: column label or sequence of labels, optional
用來指定特定的列,默認所有列
keep :{『first』, 『last』, False}, default 『first』
刪除重復項並保留第一次出現的項
inplace: boolean, default False
選擇直接在原來數據上修改或是保留一個副本
—————————————————刪除重復行
(2)操作繁瑣,人工處理容易粗心犯錯
我們經常會遇到從一個Excel表格拷貝一些數據,粘貼到另一個Excel表格中去的情況;或者從多個表格中,合並含有重復列的舊表格為新表。
這些工作並不困難,卻需要耗費大量人工審核的時間,且容易出錯。
利用python,可以放心交給機器做運算,一行命令解決人工需點擊上百次的工作。
Python處理方法如下:
設置循環遍歷,匹配關鍵字,按照列名自動分割數據存儲至本地
pandas自動分列操作
(3)重復性工作,效率低下
在做圖表時,由於每個報表都需要做對應的圖表,人工重復性操作N個報表,效率低下。
但是運用Python,可以調用已經集成好的工具包,自動化收集和清理數據,保存和刷新報表,對數據進行可視化展示。
Python處理方法如下:
對多個圖表進行批量處理,並且輕松輸出可視化內容,相比excel要高效得多。
小白學Python,壓力大嗎?
聽起來Python是不是很高大上的樣子?但事實上,即便是小白也能駕馭這樣的「高大上」技能!
簡單易學,速度快,正是學習Python的優點之一。Python說明文檔極其簡單,它更專注於解決問題而不是研究計算機語言本身,所以小白也能輕松上手!
以Python使用openpyxl讀寫excel文件為例
8. 求教python怎麼遍歷指定文件
監控目錄 -- 分兩個部分: 1. 掃描目錄文件, 保持當前狀態數據; 2. 狀態數據的比較
importos
importfnmatch
defgetfileinfo(filename):
(mode,ino,dev,nlink,
uid,gid,size,atime,mtime,ctime)=os.stat(filename)
returndict(
modifytime=mtime,
createtime=ctime,
size=size,
)
classDirectoryMonitor(object):
def__init__(self,path,fnexp="*.*"):
self.path=path
self.fnexp=fnexp
self.files={}
self.scan()
defscan(self):
currentfiles={}
forpath,dirs,filesinos.walk(self.path):
forfinfnmatch.filter(files,self.fnexp):
fullname=os.path.join(path,f)
currentfiles[fullname]=getfileinfo(fullname)
lastfiles=self.files
self.files=currentfiles
returnself.check(lastfiles,currentfiles)
@staticmethod
defcheck(lastfiles,currfiles):
monitor={}
newer={}
forfinset(currfiles)-set(lastfiles):
newer[f]=currfiles[f]
ifnewer:
monitor["newer"]=newer
deleted={}
forfinset(lastfiles)-set(currfiles):
deleted[f]=lastfiles[f]
ifdeleted:
monitor["deleted"]=deleted
changed={}
forfinset(lastfiles)&set(currfiles):
iflastfiles[f]!=currfiles[f]:
changed[f]=currfiles[f]
ifchanged:
monitor["changed"]=changed
returnmonitor
deftester():
importtime
dm=DirectoryMonitor(r"/home/tim/data","*.txt")
time.sleep(20)
m=dm.scan()
ifm:
printm
if__name__=="__main__":
tester()
9. 如何利用Python遍歷文件夾
1. 基本實現
[root@localhost ~]# cat dirfile.py
import os
path='/tmp'for dirpath,dirnames,filenames in os.walk(path): for file in filenames:
fullpath=os.path.join(dirpath,file) print fullpath
執行結果如下:
[root@localhost ~]# python dirfile.py
/tmp/yum.log/tmp/pulse-3QSA3BbwpQ49/pid/tmp/pulse-3QSA3BbwpQ49/native/tmp/.esd-0/socket
2. 在上例的基礎上傳遞參數
import os,sys
path=sys.argv[1]for dirpath,dirnames,filenames in os.walk(path): for file in filenames:
fullpath=os.path.join(dirpath,file) print fullpath
執行方式為:[root@localhost ~]# python dirfile.py /tmp
在這里,sys.argv[1]是接受參數,也可以定義sys.argv[2]接受第二個參數
3. 如何用函數實現
PS:
1> def __init__():函數,也叫初始化函數。
self.path = path可以理解為初始化定義了1個變數。 在後面的def裡面調用的時候必須要使用self.path而不能使用path
2>__name__ == '__main__'
模塊是對象,並且所有的模塊都有一個內置屬性 __name__。一個模塊的 __name__ 的值取決於您如何應用模塊。如果 import 一個模塊,那麼模塊__name__ 的值通常為模塊文件名,不帶路徑或者文件擴展名。但是您也可以像一個標準的程序樣直接運行模塊,在這種情況下, __name__ 的值將是一個特別預設"__main__"。上述類中加上__name__ == '__main__'的判斷語句,可以直接在終端環境下執行python dirfile.py /tmp進行測試,不必非得在互動式環境下導入模塊進行測試。
10. 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.txt
C:\TDDOWNLOAD b.txt
C:\TDDOWNLOAD\sub1 c.txt
C:\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.txt
C:\TDDOWNLOAD\b.txt
C:\TDDOWNLOAD\sub1\c.txt
C:\TDDOWNLOAD\sub1\d.txt
>>>
'*'為匹配模式,代表匹配所有文件,只有這樣才能將子文件夾查出來,以便遞歸深入,探查下一層的文件。