Python文件处理(1)
来源:互联网 发布:linux halt 编辑:程序博客网 时间:2024/05/29 18:04
读取文件
解决方案:
最简单的就是一次性读取所有的内容放在一个大字符串中
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,sysnargs=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 linecachetheline=linecache.getline('thefile.txt',line_number)
处理文件中每个单词
解决方案:
使用两重循环,一重处理行,一重处理单词
for line in open('thefile.txt'): for word in line.split(): print word
遍历目录树
解决方案:
使用os模块中的os.walk
import os,fnmatchdef 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: breakfor path in all_files('e://',single_level=True): print path
从指定搜索路径寻找文件
解决方案:
循环指定的搜索路径中的目录
import osdef 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 Nonesearch_path='h://'find_file=search_file('wubi*',search_path)if find_file: print "File found at %s" % find_fileelse: print "File not found"
- Python文件处理(1)
- python文件处理(1)
- python file io (文件处理 )
- Python学习(十一)------- 文件处理
- python操作处理Excel文件(转)
- python 处理文件扩展名(过滤器,等)
- python学习(12)处理文件
- Python 配置处理类(ini文件)
- python文件处理
- python初学-文件处理
- python处理zip文件
- python文件处理
- python 处理html文件
- python处理zip文件
- python处理Zip文件
- python 文件处理
- python处理xml文件
- python之文件处理
- C++中的几个关键字
- iOS GData解析xml
- iOS多线程编程之NSThread的使用
- hibernate中对象的3种状态----瞬时态、持久态、脱管态
- less 命令
- Python文件处理(1)
- 李克强:经济发展进入提质增效“第二季”
- ARM和x86架构的区别与应用
- eclispe adb问题
- vim 配置
- ubuntu 11.04 源 更新不了
- 李克强:改革不可逆转 中国经济还有奇迹
- python 类
- Java中用Cache