python的基本文件操作是包含在__buildin__模块中的。
I, 基本操作
1, 打开
fh是打开文件的handle,每一个被打开的文件都应该退出时关闭(除了handle没有赋给变量的文件,如open('filename')。
参数:
r 只读
rU 忽略不同的换行符格式的只读打开
rb 以二进制格式只读打开
w 写
wb 以二进制写打开
2,读写
- # 读取全部内容
-
text=fh.read()
-
# 读取100个字节
-
text=fh.read(100)
-
# 按行读取
-
text=fh.readlines()
-
# seek
-
fh.seek(100)
-
# 写
-
fh.write(text)
3,关闭
因为python支持错误处理,所以一般对文件的操作写成下面的形式:
- fh=open('filename')
-
try:
-
for line in fh:
-
precess line
-
finally:
-
fh.close()
4, 对文件中的每一行进行处理
- # case 1
-
fh=open('filename')
-
for line in fh:
-
print(line)
-
fh.close()
-
-
# case 2
-
fh=open('filename')
-
lines=fh.readline()
-
for line in lines:
-
print(line)
-
fh.close()
更进一步,对每一行的每一个word进行处理
- fh=open('filename')
-
lines=fh.readline()
-
for line in lines:
-
for word in line:
-
print(line)
-
fh.close()
5, 替换文件中的某个字符
- fin = open('filein', r)
-
fout = open('fileout', w)
-
for s in fin:
-
fout.write(s.replace('oldstring', 'newstring')
-
fout.close()
-
fin.close()
II, os.path介绍
操作文件,免不了要对路径,目录名,文件名进行处理。python提供了path的模块,帮助处理这类事务。可以在python中使用help(os.path)查看详细帮助。
1, 目录遍历
os.walk()
os.walk()函数返回一个三元组,依次为父目录名,目录名,文件名,他们之间以逗号分割。假设当前目录的目录结构如下:
- .
-
├── fstab
-
├── mybackup.py
-
└── sampledir
-
├── 1
-
├── 2
-
└── 3
则os.walk('.')返回如下:
- ('.', ['sampledir'], ['fstab', 'mybackup.py'])
-
('./sampledir', ['1', '2', '3'], [])
-
('./sampledir/1', [], [])
-
('./sampledir/2', [], [])
-
('./sampledir/3', [], [])
2,路径,目录名,文件名处理
- # 将路径名以最后一个/分割,返回一个二元组,如/etc/fstab被划分为/etc/, fstab
-
os.path.split(path)
-
# 将路径名划分为盘符和其他,如'C:/windows'被划分为C和windows
-
os.path.splitdrive(path)
-
# 将路径名划分为扩展名和其他,如d:/sample.txt被划分为d:/sample和txt。
-
os.path.spltext(path)
-
# 将两个路径连接,如'sdir'和'sfile'连接成'sdir/sfile'
-
os.path.join(path1,path2)
-
# 返回绝对路径
-
os.path.abspath(path)
-
# 返回目录名
-
os.path.dirname(path)
-
# 返回文件名
-
os.path.basename(path)
-
# 返回真实路径,即通过link找到真实的文件路径
-
os.path.realpath(path)
III, zipfile介绍
python提供了直接对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'
详细信息请help(zipfile)
IV, shutil介绍
shutil是用于复制及打包文件/目录的模块。
- copyfile(src,dst)
-
copytree(src, dst, symlinks=False, ignore=None)
-
move(src,dst)
-
make_archive()
V, stat介绍
- import os
-
import stat
-
filestat = os.stat('text.txt')
阅读(2971) | 评论(0) | 转发(1) |