導航:首頁 > 編程語言 > python遍歷讀取文件

python遍歷讀取文件

發布時間:2023-05-27 18:51:39

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
>>>

'*'為匹配模式,代表匹配所有文件,只有這樣才能將子文件夾查出來,以便遞歸深入,探查下一層的文件。

❷ 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 < len(li):
print(li[i])
i += 1
方法三:配合enumerate使用,同時獲取列表的索引
li = [i + 1 for i in range(10)]

# 此時,i為一個元組,元組的第一個元素為索引,第二個元素為原列表的元素
# 因此,在遍歷列表的同時,需要同時獲取坐標的情況下,可以配合enumerate()一起使用
for i in enumerate(li):
print(i)
字典的遍歷
字典的遍歷和列表有一些不同,因為字典有鍵和值兩個關鍵部分。默認的遍歷情況,是遍歷字典的鍵,當然,可以通過字典的鍵取得值,也可以直接遍歷值,或者直接遍歷鍵和值。

方法一:直接使用for循環
直接使用for循環對一個字典進行遍歷,默認取得的是字典的鍵

dt = {i: i + 1 for i in range(10)}

for i in dt:
print("字典的鍵:", i) # 字典的鍵
print("字典的值:", dt[i]) # 字典的值
方法二:遍歷dict.keys()
這種方法與方法一的效果其實是一樣的,同樣是獲取字典的鍵

dt = {i: i + 1 for i in range(10)}

for i in dt.keys():
print("字典的鍵:", i) # 字典的鍵
print("字典的值:", dt[i]) # 字典的值
方法三:遍歷dict.values()
這種方法與方法一和二很不相同,因為它只獲取了字典的值

dt = {i: i + 1 for i in range(10)}

# 這是很特殊的方法,因為它沒有獲取字典的鍵
for i in dt.values():
print("字典的值:", i) # 此時i不再是字典的鍵,而是值
方法四:遍歷dict.items()
這種方法一般來說要更好,因為它同時獲取到了字典的鍵和值,而且性能上要高於先獲取鍵,再通過鍵獲取對應的值

dt = {i: i + 1 for i in range(10)}

for i in dt.items():
print("字典的鍵值對:", i)
print("字典的鍵:", i[0])
print("字典的值:", i[1])
總結
1,列表的遍歷比較簡單,除了配合enumerate()使用,可以同步獲取索引以外,並沒有特別值得糾結的。

2,字典的遍歷方法比較多,其中第四種是能適用於一切情況的,前兩種也可以適用於一切情況,但是如果你同時需要獲取鍵和值,性能不如第四種要好。第三種比較特別,除非你真的只需要字典的值,否則它在多數情況下是不能夠滿足需求的。

❸ python如何讀取文件的內容

# _*_ coding: utf-8 _*_

import pandas as pd

# 獲取文件的內容

def get_contends(path):

with open(path) as file_object:

contends = file_object.read()

return contends

# 將一行內容變成數組

def get_contends_arr(contends):

contends_arr_new = []

contends_arr = str(contends).split(']')

for i in range(len(contends_arr)):

if (contends_arr[i].__contains__('[')):

index = contends_arr[i].rfind('[')

temp_str = contends_arr[i][index + 1:]

if temp_str.__contains__('"'):

contends_arr_new.append(temp_str.replace('"', ''))

# print(index)

# print(contends_arr[i])

return contends_arr_new

if __name__ == '__main__':

path = 'event.txt'

contends = get_contends(path)

contends_arr = get_contends_arr(contends)

contents = []

for content in contends_arr:

contents.append(content.split(','))

df = pd.DataFrame(contents, columns=['shelf_code', 'robotid', 'event', 'time'])

(3)python遍歷讀取文件擴展閱讀:

python控制語句茄團

1、if語句,當條件成立時運行語句塊。經常與else, elif(相當於else if) 配合使用。

2、for語句,遍歷列表、字元串、字典、集合等迭代器,依次處理迭代器中的每個元素。

3、while語句,當條件為真時,循環運行語句塊。

4、try語句,與except,finally配合使用處理在程序運行中出現的異常情況。

5、class語句,用於定義頃納拍類型。

6、def語句,用於定義函數和類型的方法。雀羨

❹ 求助 python循環讀取文件內容

讀取文件練習

❺ Python 拿來直接用的7個os讀寫文件的操作!網友:建議收藏!

在學習真實案例之前,我們先來了解一下Python文件操作的一些基本概念~~

如何創建讀取和寫出的文件對象,open()方法來搞定

他有兩個參數,第一個就是讀取的文件名稱,第二個是可選的,指的是打開文件的模式,默認是讀取文件。

當我們獲取到讀取文件對象fin之後我們就可以讀取文件內容了,這里介紹兩種方式。

第一種是直接讀取文件內容,

第二種是按行讀取文件內容。

區別在於如果你的文件非常大,如果直接讀取效率會非常低下,甚至會撐爆內存。

所以按行讀取按行處理就不會因為文件過大而產生問題了

文件讀取完成之後寫出文件有如下方式:

'\n'的意思是我們手動換行

最後關閉文件有兩種方式

為什麼要關閉文件呢?

如果不關閉他就會持續打開狀態,瑣事其他進程後者線程要操作它的時候就會報錯

我們有時候寫入非常大的數據的時候打開文件後會發現數據不是最新的?

這是因為python在寫出文件是先寫到內存中,等到一定的事件之後或者文件到達一定的數量之後才會寫入到磁碟

所以我們如果想要看最新的數據,可直接調用如下方法

接下來我們使用數據進行測試

1. 文件讀操作

文件讀、寫操作比較常見。讀取文件,要先判斷文件是否存在。

若文件存在,再讀取;不存在,拋出文件不存在異常。

文件存在情況:

文件不存在情況:

open 後,務必要 close,這種寫法有些繁瑣,還容易出錯。藉助 with 語法,同時實現 open 和 close 功能,這是更常用的方法。

2.獲取文件的後綴名

如何優雅地獲取文件後綴名?os.path 模塊,splitext 能夠優雅地提取文件後綴。

3. 批量修改文件後綴名

修改之前

修改文件後綴名的文件方法如下:

從修改之後:

4. 獲取文件名

有時拿到一個文件名時,名字帶有路徑。這時,使用 os.path、split 方法實現路徑和文件的分離。

我們還可以直接使用使用os.path 模塊,splitext 提取文件後綴名。

5.獲取以指定後綴結尾的文件

當我們想要查詢某路徑下所有以固定後綴結尾的文件時,可以使用如下方法

6. 批量修改文件後綴名

後綴名批量修改,實現思路:

1. 遍歷目錄下的所有文件

2. 獲取文件的後綴名

3. 如果後綴名命中為 old_ext,rename 重命名

defbatch_rename(work_dir, old_ext, new_ext):

"""

傳遞當前目錄,原來後綴名,新的後綴名後,批量重命名後綴

7. 批量獲取文件修改時間

os.walk 生成文件樹結構,os.path.getmtime 返迴文件的最後一次修改時間:

❻ 求教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()

❼ python 怎樣通過遍歷以下文件後全部讀到mongodb資料庫中

python 訪問 mongodb 需要先安裝 pymongo,如下:

1pipinstallpymongo

txt 文件格式:

代碼如下:


#coding=utf-=MongoClient('127.0.0.1',27017)#連接test資料庫,沒有則自動創建db=conn.test#使用students集合,沒有則自動創建students=db.students#打開學生信息文件,並將數據存入到資料庫withopen('students.txt','r')asf:forlineinf.readlines():#分割學生信息items=line.strip(' ').strip(' ').split(',')#添加到資料庫students.insert({'stu_id':items[0],'name':items[1],'grade':int(items[2])})#資料庫查詢學生信息並列印出來forsinstudents.find():print(s)

❽ 如何用python遍歷文件夾下的所有excel文件

大數據處理經常要用到一堆表格,然後需要把數據導入一個list中進行各種演算法分析,簡單講一下自己的做法:

1.如何讀取excel文件

網上的版本很多,在xlrd模塊基礎上,找到一些源碼

[python]view plain

❾ 如何利用Python遍歷文件夾

import os
import os.path
rootdir = 「d:\data」 # 指明被遍歷的文件夾

for parent,dirnames,filenames in os.walk(rootdir): #三個參數:分別返回1.父目錄 2.所有文件夾名字(不含路徑) 3.所有文件名字
for dirname in dirnames: #輸出文件夾信息
print "parent is:" + parent
print "dirname is" + dirname

for filename in filenames: #輸出文件信息
print "parent is": + parent
print "filename is:" + filename
print "the full name of the file is:" + os.path.join(parent,filename) #輸出文件路徑信息

#windows下為:d:\data\query_text\EL_00154

閱讀全文

與python遍歷讀取文件相關的資料

熱點內容
程序員說有人愛你怎麼回答 瀏覽:106
騰訊游戲安卓怎麼用ios登錄 瀏覽:759
石獅雲存儲伺服器 瀏覽:180
python滲透入門到精通 瀏覽:272
如何真機調試安卓進程 瀏覽:739
農行app怎麼交公共維修基金 瀏覽:667
python中字典增加元素 瀏覽:240
伺服器端渲染的數據怎麼爬 瀏覽:163
壓縮空氣噴射器 瀏覽:488
python提高效率 瀏覽:796
華為文件管理怎麼樣輸入解壓碼 瀏覽:800
深思加密狗初始化 瀏覽:566
黃金崩潰pdf 瀏覽:310
華為特定簡訊息加密 瀏覽:375
微機原理與單片機技術李精華答案 瀏覽:816
pic12c508單片機 瀏覽:309
androidgps調用 瀏覽:226
金文編pdf 瀏覽:445
14乘87減147的簡便演算法 瀏覽:473
怎麼創建edu文件夾 瀏覽:723