Python文件处理(1)
读取文件
解决方案:
最简单的就是一次性读取所有的内容放在一个大字符串中
all_the_text=open('thefile.txt').read()
all_the_data=open('abinfile','rb').read()
为了安全起见,最好将打开的文件对象指定一个名字,这样操作完成后可以迅速关闭文件
file_object=open('thefile.txt')
try:
all_the_file=file_object.read();
finally:
file_object.close();
更简单的方法是逐行读取文本文件内容,将读取的数据放置于一个字符串列表中
file_object=open('thefile.txt')
try:
list_of_all_the_lines=file_object.readlines()
finally:
file_object.close();
这样每一行的末尾都会有'\n',如果不想这样,有一些替代的方法
list_of_all_the_lines=file_object.read().splitlines()
list_of_all_the_lines=file_object.read().split('\n')
list_of_all_the_lines=[L.rstrip('\n') for L in file_object]
最简单的逐行处理文本文件的方法是用for循环
for line in file_object:
print line
删除行尾的'\n'只需要添加
line=line.rstrip('\n')
写入文件
解决方案:
最简单的方法:
open('e://thefile.txt','w').write(all_the_text)
open('abinfile','wb').write(all_the_data)
有时候需要写入的文件不在一个大字符串中,而在一个字符串列表中,这时候需要用到writelines方法
list_of_text_strings=['abc\n','defg\n','hijkl hahaha\n']
file_object=open('e://thefile.txt','w')
file_object.writelines(list_of_text_strings)
file_object.close()
搜索和替换文件中的文本(将某个字符串变为另一个)
解决方案:
使用字符串对象的replace方法
import os,sys
nargs=len(sys.argv)
if not 3<=nargs<=5:
print "usage: %s search_text repalce_text [infile [outfile]]" % \
os.path.basename(sys.argv[0])
else:
stext=sys.argv[1]
rtext=sys.argv[2]
input_file=sys.stdin
output_file=sys.stdout
if nargs> 3:
input_file=open(sys.argv[3])
if nargs> 4:
output_file=open(sys.argv[4])
for s in input_file:
output_file.write(s.replace(stext,rtext))
output_file.close()
input_file.close()
我试验了一次,发现这里的s是读取一行进行一次替换然后将替换好的行写入文件
从文件中读取指定的行
解决方案:
使用标准库linecache模块
import linecache
theline=linecache.getline('thefile.txt',line_number)
处理文件中每个单词
解决方案:
使用两重循环,一重处理行,一重处理单词
for line in open('thefile.txt'):
for word in line.split():
print word
遍历目录树
解决方案:
使用os模块中的os.walk
import os,fnmatch
def all_files(root,patterns='*',single_level=False,yield_folders=False):
patterns=patterns.split(';')
for path,subdir,files in os.walk(root):
if yield_folders:
files.extend(subdir)
files.sort()
for name in files:
for pattern in patterns:
if fnmatch.fnmatch(name,pattern):
yield os.path.join(path,name)
break
if single_level:
break for path in all_files('e://',single_level=True):
print path
从指定搜索路径寻找文件
解决方案:
循环指定的搜索路径中的目录
import os
def search_file(filename,search_path,pathsep=os.pathsep):
for path in search_path.split(pathsep):
canditate=os.path.join(path,filename)
if os.path.isfile(canditate):
return os.path.abspath(canditate)
return None
search_path='h://'
find_file=search_file('wubi*',search_path)
if find_file:
print "File found at %s" % find_file
else:
print "File not found"
Python文件处理(1)的更多相关文章
- Linux下Python 文件内容替换脚本
Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
- Python文件使用“wb”方式打开,写入内容
Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...
- Python 文件操作函数
这个博客是 Building powerful image classification models using very little data 的前期准备,用于把图片数据按照教程指示放到规定的文 ...
- python文件I/O(转)
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- python 文件操作总结
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- python文件和元组
python文件操作 相较于java,Python里的文件操作简单了很多 python 获取当前文件所在的文件夹: os.path.dirname(__file__) 写了一个工具类,用来在当前文件夹 ...
- Python文件基础
===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...
- python文件打包格式,pip包管理
1..whl是python文件的一种打包格式, 在有些情况下,可以将文件的后缀名改为.zip并解压 2.cmd中,提示pip版本太低,先升级pip pip install --upgrade pi ...
随机推荐
- asp.net判断用户是否登录
最简单的代码: if(Session["LoginUser"] == null) //注意:Session["LoginUser"]后面,没有ToString ...
- highchats与php结合生成动态统计图
series: [{ type: 'pie', name: 'Browser share', data: [ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chr ...
- VMware-Workstation安装在ubuntu15.04(内核3.19)
安装的最新版的linux15.04 安装VMware-Workstation11,运行gui程序的时候出现,VMware Kernel Module Update的提示窗口, 说是要更新vmnet-d ...
- CentOS 6.4安装(超级详细图解教程)
链接地址:http://www.osyunwei.com/archives/5855.html CentOS 6.4安装(超级详细图解教程) 附:CentOS 6.4下载地址 32位:http://m ...
- POJ2125 Destroying The Graph 二分图 + 最小点权覆盖 + 最小割
思路来源:http://blog.csdn.net/lenleaves/article/details/7873441 求最小点权覆盖,同样求一个最小割,但是要求出割去了那些边, 只要用最终的剩余网络 ...
- Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明(转)
一. 官网说明 在DBCA 建库的时候,有提示让我们选择连接类型,这里有两种类型:专用服务器模式和共享服务器模式.默认使用专用模式.如下图: Oracle 官方文档对这两种文档的说明如下: Abou ...
- 基于html5 localStorage , web SQL, websocket的简单聊天程序
new function() { var ws = null; var connected = false; var serverUrl; var connectionStatus; var send ...
- NGUI出现Shader wants normals, but the mesh UIAtlas doesn't have them
NGUI出现Shader wants normals, but the mesh UIAtlas doesn't have them,没有网格法线,打开UI Root上 UIPanel组建上的 Nor ...
- 最简单也最难——如何获取到Android控件的高度
问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth.getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单 ...
- linux下ip命令用法
配置数据转发,可以通过 1.路由转发即用用路由器实现: 2.使用NAT转发: 简单的说: 路由表内的信息只是指定数据包在路由器内的下一个去处.并不能改变数据包本身的地址信息.即它只是“换条路而已,目的 ...