python的文件操作
❶ python文件有哪些操作
使用文件:
文件迭代器是最好的讀取行工具,文件也有個迭代器會自動在for循環,列表解析或者其他迭代語句中對文件進行逐行讀取。
讀取內容是字元串,而不是對象,文件讀取的數據回到腳本時是一個字元串
close是通常選項,文件上下文管理器是一種替代方法。但close()是一個好習慣。
標准流,在sys模塊中預先打開的文件對象
os模塊中的描述文件
sockets、pipes和FIFO文件,文件類對象同步進程、網路通信
通過鍵來存取的文件,通過鍵直接存儲的不變的python對象
Shell命令流,os.popen、subprocess.Popen這樣的工具
第三方開源的文件類工具等
其他文件工具
open函數及其返回的文件對象是python腳本中通向外部文件的主要介面,但還有其他的類似工具:
❷ 關於python中的文件操作問題
思路
使用json模塊,儲存是最方便的,下面給出具體代碼示例
代碼
"""
我現在有一張列表,列表裡邊回是若干個字典答,這個列表可以作為參數給到一個函數里,列印出一張表格。
現在我把列表寫到一個txt文件中,當然保存到文件中的是字元串形式,我再重新讀取這個文件中的內容時,
之前的列表只能以字元串的形式取出,請問怎麼把這個字元串再轉換為之前的列表來使用?
"""
importjson
defprint_list(my_list):
print(my_list)
my_list=[
{
'name':'singi'
},
{
'name':'sunjun'
}
]
file_name='my_list.json'
#寫入文件
withopen(file_name,'w')asf:
json.mp(my_list,f)
#讀取文件
withopen(file_name)asf:
my_list_load=json.load(f)
print_list(my_list_load)
輸出
[{'name':'singi'},{'name':'sunjun'}]
❸ python文件寫操作
這樣把
教你個簡單的辦法
python一般不會在原文件中操作的,一般會讀出來版,操作,然後權再寫入的。代碼如下:
#encoding:gbk
insert='123'
#你想插入的字元串
line=''
#最終文件內容
f=open("1.txt","r")
i=f.readline()
#讀取文件內容
f.close()
pre=i[0:3]
last=i[3:]
line=pre+insert+last
f=open("1.txt","w")
f.write(line)
f.close()
❹ 關於python里寫文件的操作
fo.close()---你小括弧沒有。
fo = open("D:/text一.txt","w",encoding = 'utf-8')
ls = ['13','14','15']
fo.writelines(ls)
fo.close()文件在內d盤下面容
❺ python 文件讀寫
E:/hanhan/..html一看就不存在呀。
❻ Python如何用文件操作把執行結果保存到文件里
最簡單的寫法是用with,比如:
list1=['aaa','bbb','ccc']
with open('filename.txt','w')as fl:
for line in list1:
fl.write(line + '\n')
上面的運行結果會生成那個名字的文本,沒有則會創建。我這里只是展示一下最簡單的文本操作方法。請自行網路自己認真了解一下。小甲魚視頻裡面有相關教程和許多關於這個的練習題,你也可網路看看。
❼ python文件操作問題
由於你寫的是相對路徑,運行時要注意當前工作目錄是什麼,在CMD中,就是前面提版示符的權路徑。CMD的默認工作目錄是當前用戶目錄,即C:\Users\用戶名,此時運行你的python程序,那麼open("yesterday.txt")將會試圖在這個目錄下尋找yesterday.txt文件,找不到則會報錯。
❽ python文件讀寫問題
打開文件讀取後,用split(',')得到包含所有數據的列表,然後切片處理你要的數據寫入新文件
❾ python 文本文件處理
分隔日誌文件存為小文件
#coding:utf-8
#file: FileSplit.py
import os,os.path,time
def FileSplit(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
number = 100000 #每個小文件中保存100000條數據
dataLine = sFile.readline()
tempData = [] #緩存列表
fileNum = 1
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
for row in range(number):
tempData.append(dataLine) #將一行數據添加到列表中
dataLine = sFile.readline()
if not dataLine :
break
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tempData) #將列表保存到文件中
tFile.close()
tempData = [] #清空緩存列表
print(tFilename + " 創建於: " + str(time.ctime()))
fileNum += 1 #文件編號
sFile.close()
if __name__ == "__main__" :
FileSplit("access.log","access")
分類匯總小文件:
#coding:utf-8
#file: Map.py
import os,os.path,re
def Map(sourceFile, targetFolder):
sFile = open(sourceFile, 'r')
dataLine = sFile.readline()
tempData = {} #緩存列表
if not os.path.isdir(targetFolder): #如果目標目錄不存在,則創建
os.mkdir(targetFolder)
while dataLine: #有數據
p_re = re.compile(r'(GET|POST)s(.*?)sHTTP/1.[01]',re.IGNORECASE) #用正則表達式解析數據
match = p_re.findall(dataLine)
if match:
visitUrl = match[0][1]
if visitUrl in tempData:
tempData[visitUrl] += 1
else:
tempData[visitUrl] = 1
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Map("access\access.log1.txt","access")
Map("access\access.log2.txt","access")
Map("access\access.log3.txt","access")
3. 再次將多個文件分類匯總為一個文件。
#coding:utf-8
#file: Rece.py
import os,os.path,re
def Rece(sourceFolder, targetFile):
tempData = {} #緩存列表
p_re = re.compile(r'(.*?)(d{1,}$)',re.IGNORECASE) #用正則表達式解析數據
for root,dirs,files in os.walk(sourceFolder):
for fil in files:
if fil.endswith('_map.txt'): #是rece文件
sFile = open(os.path.abspath(os.path.join(root,fil)), 'r')
dataLine = sFile.readline()
while dataLine: #有數據
subdata = p_re.findall(dataLine) #用空格分割數據
#print(subdata[0][0]," ",subdata[0][1])
if subdata[0][0] in tempData:
tempData[subdata[0][0]] += int(subdata[0][1])
else:
tempData[subdata[0][0]] = int(subdata[0][1])
dataLine = sFile.readline() #讀入下一行數據
sFile.close()
tList = []
for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):
tList.append(key + " " + str(value) + ' ')
tFilename = os.path.join(sourceFolder,targetFile + "_rece.txt")
tFile = open(tFilename, 'a+') #創建小文件
tFile.writelines(tList) #將列表保存到文件中
tFile.close()
if __name__ == "__main__" :
Rece("access","access")
❿ python文件操作
這是使用迭代器的方法讀取文件內容,這種方法的好處是佔用內存空間較少。如果你使用readlines,read方法,它們實際上將整個文件內容讀取到內存中,雖然你也可以逐行輸出,但是你也可以跳著輸出的(列表)。而你的這種方法-迭代器是不能直接跨行輸出的,也就是說,你每次真的只從文件中讀了一行,並且必須逐行讀取,因為每次只讀一行,所以佔用內存極少,推薦的使用方法。