open()的参数,记得抛出IO异常,
,r,u 说明是已经存在了的,w 模式打开的文件 若存在则首先清空,a 模式则是追加数据做准备,+ 代表可读可写,b代表二进制模式访问 ,但是对于linux 下可有可无,因为linux下把所有的文件当作二进制文件,如果你的程序需要移植到其他平台下,加上b 是个不错的选择。注意,这些参数都可组合,
such as:
读写模式
fp=open('test','r+')
fp=open('test','r+')
二进制读模式打开
fp=open('test','rb')
fp=open('test','rb')
输入:
read():用来读取字节到字符串中,如果没有给定特定的参数,默认当读取到-1 时或者size 值负时,停止读取
readline(): 读取打开文件的一行作为字符串返回,参数与read相同
readlines():它会把剩下的全文返回为一个字符串
xreadlines,可以在xreadlines 模块中找到,调用file.xreadlines 等价与 xreadlines.xreadlines(file) . 不是一次性读取所有的行,而是每次读取一块,所以在for 循环时候可以减少对内存的占用,不过随着python 的迭代器的引入,没必要使用了,iter(file) 的效果是一样的。 亦或是这样:for eachline in file 代替它
输出:
有read() 当然就会有write(),它把含有文本数据或者二进制数据块写入到文件中,注意writelines (),它接受一个字符串作为参数 并写入文件,但是行行动符不会自动加入,需自行在每行结尾加行结束符
seek() 函数:可以在文件中移动指针到不同的位置, offset 字节对于某个位置的偏移量,位置默认0 ,开头算起. 1 表示从当前算起,2 代表 末尾。
文件迭代:
一行一行访问文件:
for eachLine in f:
print eachline
for eachLine in f:
print eachline
eachline 代表的是文本文件的一行,包括末尾的行结束符, 在python2.2 之前 读取最好的方法是使用file.readlines读取。不过当文件很大的时候,这个方法并不是很好,那么就有了
for eachLIne in f:
for eachLIne in f:
close() 通过关闭结束对它访问,垃圾回收机制也会在对象的引用计数降到0 的时候自动关闭文件。 例如:
fp=open(..)
fp=open(..)
,然后fp 原文件显式地关闭钱被赋予了另外一个文件对象,那么不显式的关闭文件,很可能丢失缓冲区的数据.
fileno 方法 返回打开文件的描述符
flush()方法 会直接把内部缓冲区的数据立刻写入文件。
考虑到跨平台的换行符号等的兼容性问题,可以考虑导入os 模块,这些变量自动会被设置成正确的值,减少你的麻烦
linesep 用于在文件中分隔行的字符串
sep 用来分隔文件路径名的字符串
pathsep 用于分隔 文件路径的字符串
curdir 当前工作目录的字符串名称
pardir 当前目录 的父目录的字符串的名称
有一点需要值得注意的是:print 语句默认输出内容末尾加换行符号,我们只需要在语句后面加个逗号就可以避免这个行为。由于readline()和readlines() 函数不对空白字符做任何处理,所以我们有必要加上逗号,如果省略逗号,那么显示的每行后面会有两个换行符,一个是read的,一个是print 的
tuncate()方法:
它接受一个可选的size作为参数,如果给定,那么文件将被截取到size 字节处,如果没size,默认接触到文件的当前位置。比如你刚打开一个文件,就使用这个方法,那么这个文件的内容也就等与被删除了, 0-0截取。
写个小例子:
#coding=utf-8
#!/bin/env python
import os
filename=raw_input('输入一个文件名进行编辑:\n');
fobj=open(filename,'w');
while True:
aline=raw_input("输入您需要保存的内容, 输入. 离开编辑")
if "."!=aline:
fobj.write('%s%s'%(aline,os.linesep))#由于raw_input不会保留用于输入的换行符号,所以用os 模块
else:
break
fobj.close()
#coding=utf-8
#!/bin/env python
import os
filename=raw_input('输入一个文件名进行编辑:\n');
fobj=open(filename,'w');
while True:
aline=raw_input("输入您需要保存的内容, 输入. 离开编辑")
if "."!=aline:
fobj.write('%s%s'%(aline,os.linesep))#由于raw_input不会保留用于输入的换行符号,所以用os 模块
else:
break
fobj.close()
第二个小例子:
使用seek 方法在文件内部移动,使用tell 方法展示我们的移动过程。
f=open('test','w+')
print(f.tell())
f.write('test line 1\n')#增加12 个字符
print(f.tell())
f.write('test line 2\n')
print(f.tell())
f.seek(-12,1)#往后退12个字符
print(f.tell())
f.readline()
f.seek(0,0)
print(f.readline(),)
print(f.tell())
f.readline()
print(f.tell())
f.close()
f=open('test','w+')
print(f.tell())
f.write('test line 1\n')#增加12 个字符
print(f.tell())
f.write('test line 2\n')
print(f.tell())
f.seek(-12,1)#往后退12个字符
print(f.tell())
f.readline()
f.seek(0,0)
print(f.readline(),)
print(f.tell())
f.readline()
print(f.tell())
f.close()
文件的内建属性
file.closed 表示文件已关闭,否则False
file.encodeing 文件中所使用的编码,当unicode 字符串被写入数据时,它们将自动使用file.encodeing 转换字符串,若为none 的时候,使用系统默认编码
file.mode Access 文件打开时使用的访问模式
file.name 文件名
filenewlines 未读取到行分隔符时为none,只有一种分隔符时为一个字符串,当 文件 有多种行结束符时,则是包含当前所遇到的行结束符的列表
file.softspace 为0 表示输出一数据后,要加上一空格符,1表示不加
os 模块属性
linesep 用于在文件中分隔行的字符串
sep 用来分隔文件路径名的字符串
pathsep 用于分隔文件路径的字符串
curdir 当前工作目录的字符串名称
pardir (当前工作目录的)父目录字符串名称
---------------------------------------------------------------------------------------------------------------------------------------
os 模块的文件/目录访问函数
文件处理
mkfifo()/mknod() 创建命名管道/创建文件系统节点
remove()/unlink() 删除文件 os.remove()函数用来删除一个文件。
rename()/renames() 重命名文件
*stat() 返回文件信息(包含stat(), lstat(), xstat())
symlink() 创建符号链接
utime() 更新时间戳
tmpfile() 创建并打开('w+b')一个新的临时文件
walk() 生成一个目录树下的所有文件名
目录/文件夹
chdir()/fchdir() 改变当前工作目录/通过一个文件描述符改变当前工作目录
chroot() 改变当前进程的根目录
listdir() 列出指定目录的文件 返回指定目录下的所有文件和目录名。 os.listdir(dirname):列出dirname下的目录和文件
getcwd()/getcwdu() 返回当前工作目录/功能相同, 但返回一个 Unicode 对象 os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
mkdir()/makedirs() 创建目录/创建多层目录
rmdir()/removedirs() 删除目录/删除多层目录
访问/权限
access() 检验权限模式
chmod() 改变权限模式
chown()/lchown() 改变 owner 和 group ID/功能相同, 但不会跟踪链接
umask() 设置默认权限模式
文件描述符操作
open() 底层的操作系统 open (对于文件, 使用标准的内建 open() 函数)
read()/write() 根据文件描述符读取/写入数据
dup()/dup2() 复制文件描述符号/功能相同, 但是是复制到另一个文件描述符
设备号
makedev() 从 major 和 minor 设备号创建一个原始设备号
major()/minor() 从原始设备号获得 major/minor 设备号
os.path 模块中的路径名访问函数
分隔
basename() 去掉目录路径, 返回文件名
dirname() 去掉文件名, 返回目录路径
join() 将分离的各部分组合成一个路径名
split() 返回 (dirname(), basename()) 元组
splitdrive() 返回 (drivename, pathname) 元组
splitext() 返回 (filename, extension) 元组
信息
getatime() 返回最近访问时间
getctime() 返回文件创建时间
getmtime() 返回最近文件修改时间
getsize() 返回文件大小(以字节为单位)
查询
exists() 指定路径(文件或目录)是否存在
isabs() 指定路径是否为绝对路径
isdir() 指定路径是否存在且为一个目录
isfile() 指定路径是否存在且为一个文件
islink() 指定路径是否存在且为一个符号链接
ismount() 指定路径是否存在且为一个挂载点
samefile() 两个路径名是否指向同个文件
原文地址:http://zhangjunhd.blog.51cto.com/113473/453857
下面列举一些说明:
1. os.sep 可以取代操作系统特定的路径分割符。
2. os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
3. os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
4. os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
5. os.listdir()返回指定目录下的所有文件和目录名。
6. os.remove()函数用来删除一个文件。
7. os.system()函数用来运行shell命令。
8. os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
9. os.path.split()函数返回一个路径的目录名和文件名。
10. os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。
11. os.path.existe()函数用来检验给出的路径是否真地存在
os和os.path模块
os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回但前目录('.')
os.chdir(dirname):改变工作目录到dirname
os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false
os.path.isfile(name):判断name是不是一个文件,不存在name也返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):获得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名与扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径
--------------------------------------------------------------------------------------------------------------------------------------------