python中文件的操作

平台:window 10
软件:pycharm
7.2 文件操作
7.2.1 打开文件
文件对象=open(文件名,访问模式,buffering)参数文件名通常指定需要打开的文件,通常需要包含路径,可以是绝对路径,也可以是相对路径。
访问模式,是用于打开文件的模式。也可以使用
file()函数,用法和open一样。 buffering表示缓冲,如果buffering=0,则不缓冲,如果buffering=1,则表示只缓冲一行数据,如果是大于一
的值,则缓冲所给值的大小。
 
7.2.2关闭文件
f.close()调用close方法关闭文件。
7.2.3读取文件
1、read()方法
# encoding=utf-8
s=open("D:/PycharmProjects/project2/ss")
str=s.read(5)
print str
str=s.read(5)
print str
s.close()
特别注意:下一次读取时就不从头开始,而从上一次读取结束的位置开始,从后一个元素读取。
2、readlines方法:
注意:读取的内容返回到字符串列表中
3、readline方法:一次性读取文件中的所有行。读取的内容返回到字符串中。
4、使用in关键字遍历文件的所有行。

read()、readline()、readlines()的区别:

read()和readlines()默认都是获取文件的所有内容。但是read()返回一个String类型对象,元素是一个Char。readlines()返回一个List类型对象,元素是一个Sting。而readline()获取文件的一行内容,返回是一个String。
7.2.4写入文件

写文件

注意:调用write()、writeline()时,文件原有的内容会被清空,因为文件指针初始指向文件的首行首个字母,而进行写操作实质就是在文件指针指向的位置开始写入内容。

write()

write(…) 
write(str) -> None. Write string str to file. 
Note that due to buffering, flush() or close() may be needed before 
the file on disk reflects the data written. 
将传递的String参数写入并覆盖文件内容,返回None。需要执行close()或flush()后才会将内存的数据写入到文件中。 
注意:当你在没有调用close()函数之前,你是可以调用多次write()函数来实现追加额效果,即后来的write()函数的写入的内容并不会覆盖前一次使用write()函数写入的内容,但是不会自动添加换行符。


.close与.flush的区别。使用.close会将修改内容放到文件中并且没有用写模式打开之前不能再追加内容,而.flush则不同,.flush也会将
修改内容放到文件中,并且之后可以追加的。
Writelines可以向文件中写入字符串序列
7.2.5 文件指针
1、获取文件指针:
无论是在写入还是读取过程中都可以使用:文件对象.tell()来返回文件指针的位置(是一个数字),可以使用一个变量来接收这个值
# encoding=utf-8
s1=open("ss",'w')  # 以写入模式打开文件,这个过程会清空文件
print s1.tell()   
s1.write("nihao")  #写入nohao,此时文件=指针为5
print s1.tell()
s1.write("hi")    #在前面的基础上追加
print s1.tell()
s1.close()   #关闭
s1=open("ss")  
s1.read(5)  #读取5个元素,此时文件指针位置为5
print s1.tell()
2、移动文件指针:除了读写自动移动指针外,还可以手动移动指针
使用方法:文件对象.seek((offset,where))
offset:移动的偏移量,单位为字节。可正可负,正为向文件尾移动,负为向文件头移动。
where:指定从何处开始移动,等于0从起始位置移动,等于1从当前位置,等于2时从结束位置移动。
截断文件:可以使用truncate()方法从文件头开始截取文件。
文件对象.truncate([size]) size指定要截取的文件对象,单位为字节,size后面的文件内容将被丢弃掉
文件属性:
使用os模块的stat()函数可以获取文件的创建时间,修改时间等数据。
语法如下:文件属性元组=os.stat(文件路径)
可以用索引访问返回的文件属性元组元素。
如:0代表stat.ST_MODE
import os,stat
file=os.stat("ss")
print file
print file[stat.ST_MODE]
这里不能写file[0],里面有对应的常量名称。
但是结果都是长整数,可以使用time模块的ctime()函数将他们转换成可读的时间字符串。
如:
import os,stat,time
file=os.stat("ss")
print file
print file[stat.ST_MODE]
print file[stat.ST_SIZE]
print time.ctime(file[stat.ST_SIZE])
输出结果为:
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=7L, st_atime=1490145331L, st_mtime=1490247875L, st_ctime=1490145331L)332067Thu Jan 01 08:00:07 1970
复制文件:
使用shutil模块的copy()函数复制文件。
copy(src, dst)
src:源文件的路径(绝对或者相对路径),用双引号引起来。
dst:目标文件 的路径(绝对或者相对路径),用双引号引起来。
相当于把源文件复制给目标文件
移动文件:
使用shutil模块的move()函数
move(src, dst)
将源文件移动到det中去
删除文件:
使用os模块中的remove()函数
如os.move("文件路径\\文件名")。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值