您的位置:首页 > 编程语言 > Python开发

python 文件与目录的操作   未完善 需要重新学习

2015-06-09 09:51 731 查看
文件与目录的操作:
-文件读写: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时,表示将文件指针指向从文件尾部,指向移动”偏移量“字节。

需要重新学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: