读取文件

解决方案:

最简单的就是一次性读取所有的内容放在一个大字符串中

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)的更多相关文章

  1. Linux下Python 文件内容替换脚本

    Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...

  2. 【Python文件处理】递归批处理文件夹子目录内所有txt数据

    因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...

  3. Python文件使用“wb”方式打开,写入内容

    Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...

  4. Python 文件操作函数

    这个博客是 Building powerful image classification models using very little data 的前期准备,用于把图片数据按照教程指示放到规定的文 ...

  5. python文件I/O(转)

    Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...

  6. python 文件操作总结

    Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...

  7. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  8. python文件和元组

    python文件操作 相较于java,Python里的文件操作简单了很多 python 获取当前文件所在的文件夹: os.path.dirname(__file__) 写了一个工具类,用来在当前文件夹 ...

  9. Python文件基础

    ===========Python文件基础========= 写,先写在了IO buffer了,所以要及时保存 关闭.关闭会自动保存. file.close() 读取全部文件内容用read,读取一行用 ...

  10. python文件打包格式,pip包管理

    1..whl是python文件的一种打包格式, 在有些情况下,可以将文件的后缀名改为.zip并解压 2.cmd中,提示pip版本太低,先升级pip   pip install --upgrade pi ...

随机推荐

  1. 挺有意思的HBase日志+Splunk

    如题,转载自: http://hi.baidu.com/harry_lime/item/10cf2c174853c7ea39cb3042 如何模拟拔盘操作 Linux has a nifty way ...

  2. Qt+SQLite数据加密的一种思路(内存数据库)

    了解Qt是比较早的,可是一直没有耐心去做一个练习.近期花了差不多两周时间做了次Qt开发练习,基本完成了Qt的入门,逃脱微软平台又迈出了几小步.Qt虽然是C++的,但开发应用是比较方便的,我觉得它在界面 ...

  3. Web调试利器fiddler使用

    fiddler官网:http://fiddler2.com/ http://wenku.baidu.com/view/053e79d776a20029bd642dc1 http://www.cnblo ...

  4. 基于visual Studio2013解决C语言竞赛题之0203格式化输出

     题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { // print是输出函数,参数%s表示输 ...

  5. android错误之android.content.res.Resources$NotFoundException:

    错误:android.content.res.Resources$NotFoundException: String resource ID #0x1 原因:一般发生在参数 int resId 错误, ...

  6. css3.0

    css3.0相比css2.0多了些我们经常需要使用的标签属性,例如:圆角,个别圆角,不透明度,阴影特效等 1.圆角(即如何画圆)border-radius a{width:20px; height:2 ...

  7. iOS开发中两个不错的宏定义

    /** Synthsize a weak or strong reference. Example: @weakify(self) [self doSomething^{ @strongify(sel ...

  8. [Swust OJ 1091]--土豪我们做朋友吧(并查集,最值维护)

    题目链接:http://acm.swust.edu.cn/problem/1091/ Time limit(ms): 1000 Memory limit(kb): 32768   人都有缺钱的时候,缺 ...

  9. CodeForces 385C Bear and Prime Numbers 素数打表

    第一眼看这道题目的时候觉得可能会很难也看不太懂,但是看了给出的Hint之后思路就十分清晰了 Consider the first sample. Overall, the first sample h ...

  10. 【开源框架EGOTableViewPullRefresh的研究】

    EGOTableViewPullRefresh:点击打开链接https://github.com/enormego/EGOTableViewPullRefresh RootViewController ...