文件与目录的操作:
-文件读写:python进行文件读写的函数是open或file
file_handler =
open(filename,mode)
mode,
模式 | 说明 |
r | 只读 |
r+ | 读写 |
w | 写入,先删除原文件,在重新写入,如果文件没有则 创建 |
w+ | 读写,先删除原文件,在重新写入,如果文件没有则创建(可以写入输出) |
读范例:
>>> fo = open(‘/tools/123/test.log‘) #open函数打开文件 >>> fo <open file ‘/tools/123/test.log‘, mode ‘r‘ at 0x7fdc0c144d20> #fo对象打开的文件,模式是read >>> fo.read() ‘a\n‘ #查看文件中的数据 >>> fo,close() #关闭文件 >>> fo.read() Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: I/O operation on closed file #再次读取文件,是关闭状态 #################################利用file类打开文件################################## >>> f1 = file(‘/tools/123/test.log‘) >>> f1.read() ‘a\n‘ >>> f1.close() >>> f1.read() Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: I/O operation on closed file #方法同上
写范例:
>>> fnew = open(‘/tools/123/new.test‘,‘w‘) #打开新的文件,注意w的引号,以值得形式传入 #此处文件new.test已经存在 >>>fo.write(‘hello \n My name is kong‘) #写入数据,注意是在缓冲中,\n 换行 >>> fo.close() #关闭,即可保存数据 >>> fnew=open(‘/tools/123/new.log‘,‘w‘) #注意w的特性,当它打开文件时,会清空原数据; >>> fnew.write(‘I am NEW‘) #再次写入数据 >>> fnew.close()
使用r+打开文件:(查看后写入数据)
>>> fnew=open(‘/tools/123/new.log‘,‘r+‘) >>> fnew.read() #文件可读 ‘I am NEW‘ >>> fnew.write(‘new contents‘) >>> fnew.close() #查看文件保留原有数据,且写入新的数据
(直接写入数据)
>>> fnew=open(‘/tools/123/new.log‘,‘r+‘) >>> fnew.write(‘000 nihao‘) >>> fnew.close() #查看文件内容
#文件中的数据,当我们去查看的时候,它会从第一个字母打印到最后一个字母,其实它有一个隐形的指针,从第一个字符开始读取的时候
此处未学习完毕~~~ 注意
OS模块:
import os
-目录操作需要调用os模块
-比如:
>>> import os >>> os.mkdir(‘/tools/csvt‘) >>> os.mkdir(‘test‘)
多级目录创建makedirs():
>>> os.makedirs(‘a/b/c‘)
删除目录rmdir() 、removedirs():
>>> os.rmdir(‘test‘) >>> os.rmdir(‘a‘) Traceback (most recent call last): File "<stdin>", line 1, in <module> OSError: [Errno 39] Directory not empty: ‘a‘ #提示目录不为空 >>> os.removedirs(‘a/b/c‘) #注意多级目录的删除要写明目录列表
显示当前路径getcwd():
>>> os.getcwd() ‘/tools/123‘
显示目录列表listdir():
>>> os.listdir(‘.‘) [‘test.log‘, ‘new.log‘, ‘new.test‘] #.当前路径,但是不包含子目录 >>> os.listdir(‘/tools/123/‘) [‘test.log‘, ‘new.log‘, ‘new.test‘]
切换目录操作chdir:
>>> os.chdir(‘/usr/local/‘) >>> os.getcwd() ‘/usr/local‘ #注意此切换仅仅是在python 环境中
文件对象操作:
-FileObject.close()
-String = FileObject.readline([size])
-List = FileObject.readlines([size])
-String = FileObject.read([size])
-FileObject.next()
-FileObject.write(string)
-FileObject.writelines(list)
-FileObject.seek(偏移量,选项)
-FileObject.flush()
范例:
>>> for i in open(‘test.log‘): ... print i ... www.csvt.com i am milo hello
#遍历test.log,依次打印每行,返回迭代变量
readline:
-格式
String=FileObject.readline(【size】)
-说明:
每次读取文件的一行
size:是指每行每次读取size个字节,知道行的末尾
范例:
>>> f1 = open(‘test.log‘) >>> f1.readline() ‘www.csvt.com\n‘ >>> f1.readline() ‘ i am milo\n‘ >>> f1.readline() ‘hello\n‘ >>> f1.readline() ‘‘
#每次读取一行,直到指正完毕
readlines
>>> f1.close() >>> f1 = open(‘test.log‘) >>> f1.readlines()[‘www.csvt.com\n‘, ‘ i am milo\n‘, ‘hello\n‘]
#把每行的数据作为列表当中的元素进行返回
next:
-格式:
FileObject.next()
-说明:
.返回当前行,并将文件指针到下一行
范例:
>>> f1.close() >>> f1=open(‘test.log‘) >>> f1.next() ‘www.csvt.com\n‘ >>> f1.next() ‘ i am milo\n‘ >>> f1.next() ‘hello\n‘ >>> f1.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
#效果和readline类似,注意使用readline,超出范围之后会读取空字符串,而next,超出范围之后,会停止迭代
write:
-格式:
.FileObject.write(string)
-说明:
.write和后面的writelines在写入前会是否清除文件中原来所有的数据,在重新写入新的内容,取决于打开文件的模式;
范例:
writelines:
-格式:
.FileObject.writelines(List)
-说明:
.多行写
.效率比write高,速度更快,少量写入可以使用write
范例:
>>> l = [‘one\n‘,‘two\n‘,‘three\n‘] >>> f1 = open(‘test.log‘,‘a‘) >>> f1.writelines(l) >>> f1.close()
FileObject.seek(偏移量,选项)
-选项=o时,表示将文件指针指向从文件头部到”偏移量“字节处。
-选项=1时,表示将文件指针指向从文件的当前位置,向后移动”偏移量“字节。
-选项=2时,表示将文件指针指向从文件尾部,指向移动”偏移量“字节。
需要重新学习