Python——檔案處理
#!/usr/bin/env python # -*- coding:utf-8 -*- import sys, os, zipfile, tempfile, tarfile, fnmatch; def read_file(fileName): ''' read file and print file line count ''' f = open(fileName, 'r') try: line_list = f.readlines() #read file each line without '\n' #line_list = f.read().splitlines() #line_list = f.read().split('\n') #line_list = [L.rstrip('\n') for L in f.readlines()] print len(line_list) finally: f.close() def read_file_by_chunks(fileName, chunksize=100): file_object = open(fileName, 'rb') while True: chunk = file_object.read(chunksize) if not chunk: break; yield chunk file_object.close() def search_replace_text_infile(stext='', rtext='', input_file=sys.stdin, output_file=sys.stdout): if isinstance(input_file, basestring): ifile = open(input_file, 'r') else: ifile = input_file if isinstance(output_file, basestring): ofile = open(output_file, 'w') else: ofile = output_file for s in ifile: ofile.write(s.replace(stext, rtext)) if isinstance(ifile, basestring): ifile.close() if isinstance(ofile, basestring): ofile.close() def getline(filename, desired_line_number): if desired_line_number < 1: return '' for current_line, line in enumerate(open(filename, 'rU')): if desired_line_number-1 == current_line: return line.rstrip('\n') return '' def linecount_w(filename): sys_cmd = 'wc -l ' + filename return int(os.popen(sys_cmd).read().split()[0]) def linecount_1(filename): return len(open(filename, 'r').readlines()) def linecount_2(filename): linecount = -1 for linecount, line in enumerate(open(filename, 'r')): pass return linecount+1 def linecount_3(filename): linecount = 0 f = open(filename, 'r') while True: chunk = f.read(65535) if not chunk: break linecount += chunk.count('\n') return linecount def words_of_file_in_firstline(filename, line_to_words=str.split): firstline = getline(filename, 1) for word in line_to_words(firstline): yield word def read_from_zip_file(filename): zipf = zipfile.ZipFile(filename, 'r') for fname in zipf.namelist(): bytes = zipf.read(fname) print 'File %s in %s has %d bytes' % (fname, filename, len(bytes)) zipf.close() def just_for_fun(): #create a temp file with zip suffix handle, tmpFileName = tempfile.mkstemp('.zip') os.close(handle) #open temp zip file tmpZfile = zipfile.ZipFile(tmpFileName, 'w') #write something to temp zip file #paremeter 1:the name of the file in temp file #parameter 2:The file contents is the string 'bytes' tmpZfile.writestr('hello.py', 'def f(): \ return "hello world from " + __file__\n') tmpZfile.close() #set python module search path #put temp zip file into first one sys.path.insert(0, tmpFileName) #import 'hello' module import hello #call hello module's f function print hello.f() os.unlink(tmpFileName) try: from cStringIO import StringIO except ImportError: from StringIO import StringIO class ZipString(zipfile.ZipFile): ''' read zip file content from a string ''' def __init__(self, dataString): zipfile.ZipFile.__init__(self, StringIO(dataString)) def make_tar(source_folder, dest_folder, compression='bz2'): if compression: file_ext = '.' + compression compressionPara = ':' + compression else: file_ext = '' compressionPara = '' arcname = os.path.basename(source_folder) dest_file = "%s.tar%s" % (arcname, file_ext) dest_path = os.path.join(dest_folder, dest_file) out = tarfile.TarFile.open(dest_path, 'w'+compressionPara) out.add(source_folder, arcname) out.close() return dest_path CHUNK_SIZE = 16 * 1024 def adapte_file(fileObj): ''' use file-like object to adapte a real file object ''' if isinstance(fileObj, file): return fileObj tmpFileObj = tempfile.TemporaryFile() while True: data = fileObj.read(CHUNK_SIZE) if not data: break tmpFileObj.write(data) fileObj.close() tmpFileObj.seek(0) return tmpFileObj def all_files(rootPath, patterns='*', single_level=False): patterns = patterns.split(';') for path, dirs, files in os.walk(rootPath): files.sort() for file in files: for pattern in patterns: #test whether filename matchs pattern if fnmatch.fnmatch(file, pattern): yield os.path.join(path, file) break if single_level: break def swapextensions(rootPath, before, after): if before[:1] != '.': before = '.' + before extLen = -len(before) if after[:1] != '.': after = '.' + after swapCount = 0 for path, dirs, files in os.walk(rootPath): for file in files: if file[extLen:] == before: oldfile = os.path.join(path, file) newfile = oldfile[:extLen] + after os.rename(oldfile, newfile) swapCount += 1 return swapCount def search_file(filename, searchPath, pathsep=os.pathsep): for path in searchPath.split(pathsep): candidate = os.path.join(path, filename) if os.path.isfile(candidate): return os.path.abspath(candidate) def addPythonSearchPath(newPath): ''' add new path to module search path of python return: 1 - success 0 - added path already on sys.path -1 - added path doesn't exist ''' if not os.path.exists(newPath): return -1 newPath = os.path.abspath(newPath) if sys.platform == 'win32': newPath = newPath.lower() for searchPath in sys.path: searchPath = os.path.abspath(searchPath) if sys.platform == 'win32': searchPath = searchPath.lower() else: if newPath in (searchPath, searchPath + os.sep): return 0 sys.path.append(newPath) return 1 if __name__ == '__main__': read_file('apache_log') totalbytes = 0 for chunk in read_file_by_chunks('twittericon.png'): totalbytes += len(chunk) print 'twittericon.png file size is %d bytes' % totalbytes #search_replace_text_infile('who', '***') desired_line_number = 1 print 'The %d line in "apache_log" is "%s"' % (desired_line_number, getline('apache_log', desired_line_number)) import linecache #also relate clearcache, checkcache print 'The %d line in "sample.txt" is "%s"' % (desired_line_number, linecache.getline('sample.txt', desired_line_number).rstrip('\n')) for f in linecount_w, linecount_1, linecount_2, linecount_3: print f.__name__, f('apache_log') wordlist = [] for word in words_of_file_in_firstline('apache_log'): #revert each word wordlist.append(word[::-1]) print ' '.join(wordlist) read_from_zip_file('Archive.zip') just_for_fun() #print make_tar('./OCP', '.') for path in all_files('./OCP', '*.py'): print path path = './OCP' before = 'html' after = 'htm' print 'the count of swap extensions from %s to %s at path "%s" is %d' % (before, after, path, swapextensions(path, before, after)) searchpath = '/bin' + os.pathsep + '/usr/bin' find_file = search_file('ls', searchpath) if find_file: print 'File "ls" found at %s.' % find_file else: print 'File "ls" not found.' print 'origin search path:' for x in sys.path: print x print "add new path to module search path of python, result:%d" % addPythonSearchPath('./OCP') print 'New search path:' for x in sys.path: print x
相關推薦
python檔案處理、路徑處理、序列化和反序列化
檔案IO常用操作 一般說IO操作,指的是檔案IO,如果指的是網路IO,會直接說。 把檔案儲存到磁碟上的這個過程,叫做落地。 column column open 開啟
python 檔案處理
一、概述 資料的儲存可以使用資料庫,也可以使用檔案。 資料庫保持了資料的完整性和關聯性,且使用資料更安全、可靠。使用檔案儲存資料則非常簡單、易用,不必安裝資料庫管理系統等執行環境。 檔案通常用於儲存應用軟體的引數或臨時性資料,是一個命名的位元集合,儲存在硬碟、U盤、快閃
Python檔案處理
檔案開啟方式: ‘r’ 以只讀的方式開啟檔案,檔案的描述符放在檔案的開頭。 ‘rb’ 以二進位制格式開啟一個檔案用於只讀,檔案的描述符放在檔案的開頭。 ‘r+’ 開啟一個檔案用於讀寫,檔案的描述符放在檔案的開頭。 ‘w’ 開啟一個檔案只用於寫入,若該檔案已經存在
python—檔案處理
一、檔案處理流程 1、開啟檔案,得到檔案控制代碼並賦值 2、通過控制代碼對檔案進行操作 3、關閉檔案 二、檔案開啟模式 1、r,只讀,預設模式 2、w,只寫 3、a,追加 4、 r+、w+、x+、a+ ,可讀可寫 ## 模式 r—只讀 預設只讀 f = op
python 檔案處理(基礎字元)
基於字元read & write 最基本的檔案操作當然就是在檔案中讀寫資料。這也是很容易掌握的。現在開啟一個檔案以進行寫操作: 1. fileHandle = open ( 'test.txt', 'w' ) fileHandle = open ( 'test.txt', 'w' ) ‘w'是
Python——檔案處理
#!/usr/bin/env python # -*- coding:utf-8 -*- import sys, os, zipfile, tempfile, tarfile, fnmatch; def read_file(fileName): '''
Python檔案處理和Numpy陣列處理
1.Numpy陣列操作 以zeros為例,建立3行1列的x,y,型別為64位浮點,即double from numpy import zeros x = zeros((3,1),dtype =
Python -- 檔案處理
1.檔案讀寫 f=open(path,’r’)返回物件為file-like object 寫入時,沒有這個檔案時,自動建立 有的話,自動覆蓋這個檔案 2.讀寫的中文支援 import codecs f=codecs.open(filename,mod
python檔案處理,b模式的讀寫,rb, wb,編碼的兩種方式
字串轉二進位制的辦法 bytes(字串,encoding='編碼') 字串.encode('編碼') 主要通過這兩種辦法可以讓字串轉為bytes型別 為什麼要用二進位制的讀寫? 因為圖片視訊不是字串方式能顯示的,所以只能用b的方式來. 另外二進位制資料可以跨
python檔案處理時的問題:split函式,input函式
檔案操作目的:對檔案中的對話內容進行分割,把買家和客戶的談話內容分別儲存在不同的檔案中,但是去掉談話物件。遇到如下問題: 程式程式碼如下: 使用字串的split時,報錯 錯誤內容:這個函式需要至少一個值。 讀取的檔案是: 在split函式中
Python —— 檔案處理
1. 開啟檔案 open(filename, mode, buffering) mode=‘r’:以只讀模式開啟檔案。若此檔案不存在,報錯 mode=‘w’:以寫模式開啟。若此檔案不存在,則建立一個;若此檔案已存在,則先清空 mode=‘a’:以追加
python 檔案處理
python中對檔案、資料夾的操作需要涉及到os模組和shutil模組。 建立檔案: 1) os.mknod(“test.txt”) 建立空檔案 2) open(“test.txt”,w) 直接開啟一個檔案,如果檔案不存在則建立檔案 建立目錄: o
Python檔案處理(1)
讀取檔案 解決方案: 最簡單的就是一次性讀取所有的內容放在一個大字串中 all_the_text=open('thefile.txt').read() all_the_data=open('abinfile','rb').read() 為了安全起見,最好將開啟的檔案物件
Python檔案&IO處理技巧(1): 讀寫、重定向、間隔符、路徑、存在性與檔案列表
1. 文字資料的讀寫 open() & write() : rt模式的重新整理模式 當我們需要讀寫各種不同編碼的文字資料(如ASCII,UTF-8或UTF-16編碼等), 可以直接使用帶rt模式的open()內建函式。如果需要將文字內容寫入到一個檔案中,就要使用帶有 w
第二篇 Python資料型別、字元編碼、檔案處理
一、引子 1、什麼是資料? x=10,10是我們要儲存的資料 2、為何資料要分不同的型別
python資料處理----常用資料檔案的處理
資料處理時,常用資料儲存形式主要有:CSV、JSON、XML、EXCEL、資料庫儲存。 一、CSV檔案 csv檔案簡介 CSV是一種通用的、相對簡單的檔案格式,被使用者、商業和科學廣泛應用。最廣泛的應用是在程式之間轉移表格資料,而這些程式本身是在不相容的格式上進行操作的(往往是私有的和/或無規
影象識別資料集處理——python 檔案操作
通過 excel 獲取資料集 資料集放在一個總資料夾中,excel中對影象標識做了記錄,我們需要通過讀取excel中的影象檔名來獲取相應的影象。 例項檔案結構如下: 源目錄 ├── 二級目錄1 │ ├──example_01.jpg │ └──example_02.
python配置檔案處理模組
import configparser class ReadConfig: '''read config file''' def read_config(self,file_path,section,option): cf = configparser.Co
Python-檔案操作處理
一、檔案操作基礎功能: f = open("檔案.txt", 'r', 'utf-8') #讀的模式開啟檔案 f = open("檔案.txt", 'r+', 'utf-8') #寫讀模式開啟檔案 f = open("檔案.txt", 'rb') # 讀取為二進位制模式,用於網路傳輸 f = o
Cris 的Python筆記(十三):異常和檔案處理
文章目錄 1. Python 是如何處理異常的? 2. Python 中常用的檔案處理語法(重點) 3. Python 處理二進位制檔案 4. seek 和 tell 方法 5. 檔案操作之 os 包的常