读取文件

解决方案:

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

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. 单点登录 .NET MVC

    原文:单点登录 .NET MVC CAS 实现单点登录 .NET MVC   单点登录 Single Sign On,简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应 ...

  2. Maven 版 JPA 最佳实践

    项目结构图 数据库环境 数据库:MySQL 版本:5.x 数据库名:jpa-demo 用户名密码:root/1234 代码清单 1:数据库脚本: /* Navicat MySQL Data Trans ...

  3. vs使代码可以折叠的方法

    set [工具]->[选项]->[文本编辑器]->[C/C++]->[查看]->[大纲显示]->[大纲语句块] = True

  4. C# 操作Excel (二)

    根据翻阅LTP.Net知识库系列之四中Office操作功能: 一.记录常用如下 (1)“在自己的程序中宿主Office”的意思就是在我们自己开发的应用程序的窗体上,显示一个就像Office应用程序那样 ...

  5. C++_01_入门

    一.类的定义 Person.h类声明 Person.cpp类实现 main.cpp主函数 二.命名空间的使用 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv ...

  6. C++之字符串分割函数split

    c++之字符串分割: /* *c++之字符串分割: */ #include <iostream> #include <string> #include <vector&g ...

  7. html5 学习笔记

    一.ie8及以下对html5相关语义标签的支持 <!-[if lt IE9]> <script src="html5.js"></script> ...

  8. Automake创建项目

    autoconf和automake可以方便的构建linux下项目,一个简单的automake项目实例,麻雀虽小五脏俱全,以后无外乎在这基础上扩展相应的宏完善而已. .首先建立项目目录树 )创建目录树 ...

  9. 基于visual Studio2013解决算法导论之048红黑树

     题目 红黑树 解决代码及点评 // 红黑树.cpp : 定义控制台应用程序的入口点. // #include <stdio.h> #include <stdlib.h> ...

  10. 【C语言】数字在排序数组中出现的次数(改动)

    //数字在排序数组中出现的次数(改动) //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3.3,4,5}和数字3,因为3出现了4次,因此输出4. #include <st ...