- 浏览: 829779 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
sunbeamzheng:
总结的很好,好好看看。 拷贝问题确实很需要注意,特别是影不影响 ...
java深拷贝与浅拷贝 -
xmh8023:
...
获取POST数据的值 -
xmh8023:
我访问别的服务器怎么办?急求
获取POST数据的值 -
xmh8023:
String urlString="http://l ...
获取POST数据的值 -
lv12312:
Tomcat 7的老版本么?有bug的,https://iss ...
JMX问题
摘自python cookbook2(文本文件)
url:http://wiki.woodpecker.org.cn/moin/PyCookbook
1.从文件读取文本或数据
一次将文件内容读入一个长字符串的最简便方法
如:all_the_text = open('thefile.txt').read( ) # 文本文件的全部文本
all_the_data = open('abinfile', 'rb').read( ) # 2进制文件的全部数据
更好的方法是将文件对象和一个变量绑定,可以及时关闭文件。比如,读取文本文件内容:
如:file_object = open('thefile.txt') # 打开文件
all_the_text = file_object.read( ) # 文本文件的全部文本
file_object.close( ) # 使用完毕,关闭文件
将文本文件的全部内容按照分行 作为一个list读出有5种方法:
list_of_all_the_lines = file_object.readlines( ) # 方法 1
list_of_all_the_lines = file_object.read( ).splitlines(1) # 方法 2
list_of_all_the_lines = file_object.read().splitlines( ) # 方法 3
list_of_all_the_lines = file_object.read( ).split('\n') # 方法 4
list_of_all_the_lines = list(file_object) # 方法 5
2.文件中写入文本或2进制数据
将一个(大)字符串写入文件的最简单的方法如下:
如:open('thefile.txt', 'w').write(all_the_text) # 写入文本到文本文件
open('abinfile', 'wb').write(all_the_data) # 写入数据到2进制文件
更好的方法是将文件对象和一个变量绑定,可以及时关闭文件。比如,文本文件写入内容:
如:file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )
写入文件的内容更多时不是一个大字符串,而是一个字符串的list(或其他序列),这时应该使用writelines方法(此方法同样适用于2进制文件的写操作)
如:file_object.writelines(list_of_text_strings)
open('abinfile', 'wb').writelines(list_of_data_strings)
3.读取文件的指定一行
如:import linecache
#thefiepath 文件路径
#desired_line_number 整数,文件的特定行
theline = linecache.getline(thefilepath, desired_line_number)
4.需要统计文件的行数
如:count = len(open(thefilepath).readlines( )) #方法1
count = 0 #方法2
for line in open(thefilepath).xreadlines( ): count += 1
5.读取INI配置文件
import ConfigParser
import string
_ConfigDefault = {
"database.dbms": "mysql",
"database.name": "",
"database.user": "root",
"database.password": "",
"database.host": "127.0.0.1"
}
def LoadConfig(file, config={}):
"""
returns a dictionary with keys of the form
<section>.<option> and the corresponding values
"""
#返回一个字典,格式如下: key: <section>.option>
# value : 对应的值
config = config.copy( )
cp = ConfigParser.ConfigParser( )
cp.read(file)
for sec in cp.sections( ):
name = string.lower(sec)
for opt in cp.options(sec):
config[name + "." + string.lower(opt)] = string.strip(
cp.get(sec, opt))
return config
if _ _name_ _=="_ _main_ _":
print LoadConfig("some.ini", _ConfigDefault)
6.有ZIP压缩文件, 不需要解压,直接检查其包含的部分或全部文件信息
如:import zipfile
z = zipfile.ZipFile("zipfile.zip", "r")
for filename in z.namelist( ):
print 'File:', filename,
bytes = z.read(filename)
print 'has',len(bytes),'bytes'
7.分解出文件路径所有组成部分
如:
import os, sys
def splitall(path):
allparts = []
while 1:
parts = os.path.split(path)
if parts[0] == path: # sentinel for absolute paths #绝对路径的哨兵
allparts.insert(0, parts[0])
break
elif parts[1] == path: # sentinel for relative paths #相对路径的哨兵
allparts.insert(0, parts[1])
break
else: #处理其余部分
path = parts[0]
allparts.insert(0, parts[1])
return allparts
8.遍历检查目录, 或者遍历以某目录为根目录的完整的目录树,获取符合特定模式的全部文件
如:
import os.path, fnmatch
def listFiles(root, patterns='*', recurse=1, return_folders=0):
# Expand patterns from semicolon-separated string to list
pattern_list = patterns.split(';')
# Collect input and output arguments into one bunch
class Bunch:
def _ _init_ _(self, **kwds): self._ _dict_ _.update(kwds)
arg = Bunch(recurse=recurse, pattern_list=pattern_list,
return_folders=return_folders, results=[])
def visit(arg, dirname, files):
# Append to arg.results all relevant files (and perhaps folders)
for name in files:
fullname = os.path.normpath(os.path.join(dirname, name)) #目录规范化
if arg.return_folders or os.path.isfile(fullname): #判断是否返回目录。 是否是文件
for pattern in arg.pattern_list: #模式匹配用 "or" ,符合一个就ok
if fnmatch.fnmatch(name, pattern):
arg.results.append(fullname) #结果中添加文件名称
break
# Block recursion if recursion was disallowed
if not arg.recurse: files[:]=[] #把list中目录包含的文件/子目录置空,子目录没了哈
os.path.walk(root, visit, arg)
return arg.results
9.给定搜索路径(分隔符分开的欲搜索路径组成的字符串),查找第一个名称符合的文件
如:
import os, string
def search_file(filename, search_path, pathsep=os.pathsep):
""" Given a search path, find file with requested name """
for path in string.split(search_path, pathsep):
candidate = os.path.join(path, filename)
if os.path.exists(candidate): return os.path.abspath(candidate)
return None
if _ _name_ _ == '_ _ _main_ _':
search_path = '/bin' + os.pathsep + '/usr/bin' # ; on Windows, : on Unix
find_file = search_file('ls',search_path)
if find_file:
print "File found at %s" % find_file
else:
print "File not found"
10.在更新文件前,需要进行备份 : 按照标准协议是在原文件末尾加3位数字作为版本号来备份原文件
如:
def VersionFile(file_spec, vtype='copy'):
import os, shutil
if os.path.isfile(file_spec):
# or, do other error checking:
if vtype not in 'copy', 'rename':
vtype = 'copy'
# Determine root filename so the extension doesn't get longer
n, e = os.path.splitext(file_spec)
# Is e an integer?
try:
num = int(e)
root = n
except ValueError:
root = file_spec
# Find next available file version
for i in xrange(1000):
new_file = '%s.%03d' % (root, i)
if not os.path.isfile(new_file):
if vtype == 'copy':
shutil.copy(file_spec, new_file)
else:
os.rename(file_spec, new_file)
return 1
return 0
if _ _name_ _ == '_ _main_ _':
# test code (you will need a file named test.txt)
print VersionFile('test.txt')
print VersionFile('test.txt')
print VersionFile('test.txt')
url:http://wiki.woodpecker.org.cn/moin/PyCookbook
1.从文件读取文本或数据
一次将文件内容读入一个长字符串的最简便方法
如:all_the_text = open('thefile.txt').read( ) # 文本文件的全部文本
all_the_data = open('abinfile', 'rb').read( ) # 2进制文件的全部数据
更好的方法是将文件对象和一个变量绑定,可以及时关闭文件。比如,读取文本文件内容:
如:file_object = open('thefile.txt') # 打开文件
all_the_text = file_object.read( ) # 文本文件的全部文本
file_object.close( ) # 使用完毕,关闭文件
将文本文件的全部内容按照分行 作为一个list读出有5种方法:
list_of_all_the_lines = file_object.readlines( ) # 方法 1
list_of_all_the_lines = file_object.read( ).splitlines(1) # 方法 2
list_of_all_the_lines = file_object.read().splitlines( ) # 方法 3
list_of_all_the_lines = file_object.read( ).split('\n') # 方法 4
list_of_all_the_lines = list(file_object) # 方法 5
2.文件中写入文本或2进制数据
将一个(大)字符串写入文件的最简单的方法如下:
如:open('thefile.txt', 'w').write(all_the_text) # 写入文本到文本文件
open('abinfile', 'wb').write(all_the_data) # 写入数据到2进制文件
更好的方法是将文件对象和一个变量绑定,可以及时关闭文件。比如,文本文件写入内容:
如:file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )
写入文件的内容更多时不是一个大字符串,而是一个字符串的list(或其他序列),这时应该使用writelines方法(此方法同样适用于2进制文件的写操作)
如:file_object.writelines(list_of_text_strings)
open('abinfile', 'wb').writelines(list_of_data_strings)
3.读取文件的指定一行
如:import linecache
#thefiepath 文件路径
#desired_line_number 整数,文件的特定行
theline = linecache.getline(thefilepath, desired_line_number)
4.需要统计文件的行数
如:count = len(open(thefilepath).readlines( )) #方法1
count = 0 #方法2
for line in open(thefilepath).xreadlines( ): count += 1
5.读取INI配置文件
import ConfigParser
import string
_ConfigDefault = {
"database.dbms": "mysql",
"database.name": "",
"database.user": "root",
"database.password": "",
"database.host": "127.0.0.1"
}
def LoadConfig(file, config={}):
"""
returns a dictionary with keys of the form
<section>.<option> and the corresponding values
"""
#返回一个字典,格式如下: key: <section>.option>
# value : 对应的值
config = config.copy( )
cp = ConfigParser.ConfigParser( )
cp.read(file)
for sec in cp.sections( ):
name = string.lower(sec)
for opt in cp.options(sec):
config[name + "." + string.lower(opt)] = string.strip(
cp.get(sec, opt))
return config
if _ _name_ _=="_ _main_ _":
print LoadConfig("some.ini", _ConfigDefault)
6.有ZIP压缩文件, 不需要解压,直接检查其包含的部分或全部文件信息
如:import zipfile
z = zipfile.ZipFile("zipfile.zip", "r")
for filename in z.namelist( ):
print 'File:', filename,
bytes = z.read(filename)
print 'has',len(bytes),'bytes'
7.分解出文件路径所有组成部分
如:
import os, sys
def splitall(path):
allparts = []
while 1:
parts = os.path.split(path)
if parts[0] == path: # sentinel for absolute paths #绝对路径的哨兵
allparts.insert(0, parts[0])
break
elif parts[1] == path: # sentinel for relative paths #相对路径的哨兵
allparts.insert(0, parts[1])
break
else: #处理其余部分
path = parts[0]
allparts.insert(0, parts[1])
return allparts
8.遍历检查目录, 或者遍历以某目录为根目录的完整的目录树,获取符合特定模式的全部文件
如:
import os.path, fnmatch
def listFiles(root, patterns='*', recurse=1, return_folders=0):
# Expand patterns from semicolon-separated string to list
pattern_list = patterns.split(';')
# Collect input and output arguments into one bunch
class Bunch:
def _ _init_ _(self, **kwds): self._ _dict_ _.update(kwds)
arg = Bunch(recurse=recurse, pattern_list=pattern_list,
return_folders=return_folders, results=[])
def visit(arg, dirname, files):
# Append to arg.results all relevant files (and perhaps folders)
for name in files:
fullname = os.path.normpath(os.path.join(dirname, name)) #目录规范化
if arg.return_folders or os.path.isfile(fullname): #判断是否返回目录。 是否是文件
for pattern in arg.pattern_list: #模式匹配用 "or" ,符合一个就ok
if fnmatch.fnmatch(name, pattern):
arg.results.append(fullname) #结果中添加文件名称
break
# Block recursion if recursion was disallowed
if not arg.recurse: files[:]=[] #把list中目录包含的文件/子目录置空,子目录没了哈
os.path.walk(root, visit, arg)
return arg.results
9.给定搜索路径(分隔符分开的欲搜索路径组成的字符串),查找第一个名称符合的文件
如:
import os, string
def search_file(filename, search_path, pathsep=os.pathsep):
""" Given a search path, find file with requested name """
for path in string.split(search_path, pathsep):
candidate = os.path.join(path, filename)
if os.path.exists(candidate): return os.path.abspath(candidate)
return None
if _ _name_ _ == '_ _ _main_ _':
search_path = '/bin' + os.pathsep + '/usr/bin' # ; on Windows, : on Unix
find_file = search_file('ls',search_path)
if find_file:
print "File found at %s" % find_file
else:
print "File not found"
10.在更新文件前,需要进行备份 : 按照标准协议是在原文件末尾加3位数字作为版本号来备份原文件
如:
def VersionFile(file_spec, vtype='copy'):
import os, shutil
if os.path.isfile(file_spec):
# or, do other error checking:
if vtype not in 'copy', 'rename':
vtype = 'copy'
# Determine root filename so the extension doesn't get longer
n, e = os.path.splitext(file_spec)
# Is e an integer?
try:
num = int(e)
root = n
except ValueError:
root = file_spec
# Find next available file version
for i in xrange(1000):
new_file = '%s.%03d' % (root, i)
if not os.path.isfile(new_file):
if vtype == 'copy':
shutil.copy(file_spec, new_file)
else:
os.rename(file_spec, new_file)
return 1
return 0
if _ _name_ _ == '_ _main_ _':
# test code (you will need a file named test.txt)
print VersionFile('test.txt')
print VersionFile('test.txt')
print VersionFile('test.txt')
发表评论
-
GAE发布
2010-04-24 10:42 3030很久没有写GAE的东西了,突然想写了点东西,很奇怪突然之间就传 ... -
django简单的入门例子
2009-04-30 10:40 15686django入门例子: 都是参考了网上的例子完成的~ 建立 ... -
摘自python cookbook1(字符串,字典)
2009-04-23 14:55 2600摘自python cookbook1(字符串,字典) url: ... -
flup安装问题
2009-03-23 19:02 9263在windows下flup一直安装不上,不知道为什么,在 ... -
xml的解析例子
2009-03-23 15:34 1483xml解析的一个例子,如下所示: #!/usr/bin/e ... -
python备份文件
2009-03-20 18:22 1499#-*-coding:utf-8-*- import o ... -
python 解析url
2009-03-20 18:13 5113摘录了dive into python的例子 有两种方法,HT ... -
使用python下载日志
2009-03-17 18:48 2811第一步:主要是读取配置文件的内容,以及把各种数据存放到文件里 ... -
python控制流
2008-12-21 16:27 1288条件语句: if expression: sta ... -
python类型转换、数值操作
2008-12-21 16:20 53853python类型转换 函数 ... -
python学习之类型和对象
2008-12-21 16:14 8538序列是由非负整数索引 ... -
Django 的数据库查询
2008-12-14 14:21 49817class Blog(models.Model): ... -
摘自python的文档
2008-12-11 09:15 1279Boolean Operations — and, o ... -
python发送email
2008-11-11 15:46 8356第一种方法: # -*- coding: utf-8 -* ... -
python的简单文件操作
2008-10-28 09:15 1775#-*-coding:utf-8-*- import o ... -
python的数据库链接
2008-10-28 09:13 2137附件中是添加到mysql的windows下的库安装程序 ... -
用python实现的时间函数
2008-10-28 09:11 4247#-*-coding:utf-8-*- import d ...
相关推荐
3. 文件 I/O:该书介绍了 Python 中的文件 I/O 操作,包括文件读写、文本处理、 CSV 文件处理等内容。 4. 网络编程:该书详细介绍了 Python 中的网络编程,包括 socket 编程、TCP/IP 协议、HTTP 协议等内容。 5. ...
Python Cookbook 第3版 中文版 Python Cookbook 第3版 中文版
Python Cookbook, 2nd Edition, Python Cookbook, 2nd Edition, Python Cookbook, 2nd Edition
根据提供的文件信息,内容来自于《Python Cookbook》第三版,这本书是由David Beazley和Brian K. Jones共同编著的,由O’Reilly Media, Inc.出版。在介绍这本书时,我们要关注Python编程中的数据结构和算法的应用。 ...
Python Cookbook, 2nd Edition By David Ascher, Alex Martelli, Anna Ravenscroft
Python Cookbook 2Nd Edition 第二版
Python Cookbook(第3版)中文版.pdf 极清PDF
《Python Cookbook》是一本深受Python程序员喜爱的实战指南,它由David Beazley和Brian K. Jones合著,是Python编程领域中的经典之作。这本书旨在帮助开发者解决在实际编程过程中遇到的各种问题,提供了大量实用的...
这本书的电子版以CHM(Microsoft编写的帮助文件格式)的形式存在于"PythonCookbook.zip"压缩包中。下面我们将深入探讨该书中涉及的一些关键Python知识点。 1. **函数和模块**:Python的模块化设计允许开发者将代码...
python cookbook 第二版,chm格式
《Python CookBook》一直是较为经典的Python教程。它注重方法和技巧的讲解,能让学习者更好的理解Python这门语言,最终将技巧运用到项目中。本书作者是David Beazley大神,一位独立的计算机科学家、教育家,以及有着...
《Python Cookbook》是一本深受Python开发者喜爱的实战指南,它汇集了各种实用的编程技巧和解决方案,涵盖了Python语言的各个方面。这本书的随书代码库,名为"python-cookbook-master",提供了书中所有示例的源代码...
Python Cookbook 2nd Edition Book
《现代Python Cookbook》是Steven F. Lott撰写的一本针对Python 3的实用编程指南,旨在帮助开发者掌握更高效、更简洁的编程技巧。这本书的随书代码文件名为"ModernPythonCookbook_Code",其中包含了书中各个章节示例...
Python CookBook 3rd Edition, epub type file
3. **字符串和正则表达式**:Python在处理文本数据方面非常强大,Cookbook详细讲解了字符串操作和正则表达式的高级用法,如模式匹配、替换、分割和提取信息。 4. **迭代器和生成器**:Python的迭代器和生成器机制...