05Python文件操作Word文档格式.docx
《05Python文件操作Word文档格式.docx》由会员分享,可在线阅读,更多相关《05Python文件操作Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
1.4.3目录操作8
1.5练习9
1文件操作
1.1快速入门
1.1.1用Python创建一个新文件
内容是从0到9的整数,每个数字占一行:
#python
f=open('
f.txt'
'
w'
)#r只读,w可写,a追加
foriinrange(0,10):
f.write(str(i)+'
\n'
)
f.close()
r'
t=f.readlines()
print(t)
1.1.2文件内容追加,从0到9的10个随机整数
importrandom
a'
f.write(str(random.randint(0,9)))
f.write('
1.1.3文件内容追加,从0到9的随机整数,10个数字一行,共10行
foriinrange(0,10):
f.write(str(random.randint(0,9)))
f.write('
)
如何读取并显示:
g=open('
rt'
s=g.readlines()
print(s)
foriinrange(len(s)):
s[i]=s[i].strip('
g.close()
1.1.4把标准输出定向到文件
importsys
sys.stdout=open("
stdout.txt"
"
w"
1.2文件的读写
1.2.1文件打开
f=file(name[,mode[,buffering]])
入口参数:
name文件名
mode选项,字符串
buffering是否缓冲(0=不缓冲,1=缓冲,>
1的int数=缓冲区大小)
返回值:
文件对象
mode选项:
"
r"
以读方式打开,只能读文件,如果文件不存在,会发生异常
以写方式打开,只能写文件,如果文件不存在,创建该文件
如果文件已存在,先清空,再打开文件
rb"
以二进制读方式打开,只能读文件,如果文件不存在,会发生异常
wb"
以二进制写方式打开,只能写文件,如果文件不存在,创建该文件
rt"
以文本读方式打开,只能读文件,如果文件不存在,会发生异常
wt"
以文本写方式打开,只能写文件,如果文件不存在,创建该文件
rb+"
以二进制读方式打开,可以读、写文件,如果文件不存在,会发生异常
wb+"
以二进制写方式打开,可以读、写文件,如果文件不存在,创建该文件
1.2.2关闭文件
当文件读写完毕后,应关闭文件。
1.2.3清空文件内容
f.truncate()
注意:
仅当以"
r+"
"
等以可写模式打开的文件才可以执行该功能。
1.2.4文件的指针定位与查询
(1)文件指针:
文件被打开后,其对象保存在f中,它会记住文件的当前位置,以便于执行读、写操作,这个位置称为文件的指针(一个从文件头部开始计算的字节数long类型)。
(2)文件打开时的位置:
以"
读方式,"
w+"
写方式打开的文件,
一开始,文件指针均指向文件的头部。
(3)获取文件指针的值:
L=f.tell()
(4)移动文件的指针
f.seek(偏移量,选项)
选项=0时,表示将文件指针指向从文件头部到"
偏移量"
字节处。
选项=1时,表示将文件指针指向从文件的当前位置,向后移动"
字节。
选项=2时,表示将文件指针指向从文件的尾部,,向前移动"
1.2.5从文件读取指内容
1文本文件(以"
方式打开的文件)的读取
s=f.readline()
返回值:
s是字符串,从文件中读取的一行,含行结束符。
说明:
(1)如果len(s)=0表示已到文件尾
(2)如果是文件的最后一行,有可能没有行结束符
2二进制文件(以"
、"
方式打开的文件)的读取
s=f.read(n)
(2)文件读取后,文件的指针向后移动len(s)字节。
(3)如果磁道已坏,会发生异常。
1.2.6向文件写入一个字符串
f.write(s)
参数:
s要写入的字符串
(1)文件写入后,文件的指针向后移动len(s)字节。
(2)如果磁道已坏,或磁盘已满会发生异常。
返回值:
s是字符串,从文件中读取的内容
1.2.7删除文件
importos
os.remove(file)
1.3打开文件
读写文件之前,先用open()函数打开一个文件,它会返回一个文件对象(fileobject):
f=open(filename,mode)
如果不指定mode参数,文件将默认以‘r'
模式打开。
模式中的字符有:
r:
只读
w:
只写,如果文件已存在则将其覆盖。
如果该文件不存在,创建新文件
+:
读写(不能单独使用)
a:
打开文件用于追加,只写,不存在则创建新文件
b:
以二进制模式打开(不能单独使用)
所以可能的模式大概有r、w、r+、w+、rb、wb、rb+、wb+、a、a+、ab、ab+,注意只有w和a可以创建文件。
通常情况下,文件都是以文本模式(textmode)打开的,也就是说,从文件中读写的是以一种特定的编码格式进行编码(默认的是UTF-8)的字符串。
如果文件以二进制模式(binarymode)打开,数据将以字节对象的形式进行读写:
f=open('
a.txt'
wb+'
Ilikeapple!
'
)
#报错
f.write(b'
)#以bytes对象的形式进行读写
Bytes对象是0到127的不可修改的整数序列,或纯粹的ASCII字符,它的用途是存储二进制数据。
可以通过在一个字符串前面加上'
b'
来创建一个bytesliteral;
也可以通过bytes()函数创建一个bytes对象。
如果bytes()函数的初始化器是一个字符串,那么必须提供一种编码。
b1=b'
Thisisstring'
b2=bytes('
'
UTF-8'
#必须指定编码格式
字符串对象与字节对象是不兼容的,要将bytes转变为str,bytes对象必须要进行解码,使用decode()方法:
b=bytes('
print(b,b.decode(),sep='
#输出:
#b'
#Thisisstring
文件对象的方法(假设f是一个文件对象):
f.read(size):
读取size个字节的数据,然后作为字符串或bytes对象返回。
size是一个可选参数,如果不指定size,则读取文件的所有内容。
f.readline():
读取一行。
在字符串末尾会留下换行符(\n),如果到文件尾,返回空字符串。
f.readlines():
读取所有行,储存在列表中,每个元素是一行,相当于list(f)。
f.write(string):
将string写入到文件中,返回写入的字符数。
如果以二进制模式写文件,需要将string转换为bytes对象。
f.tell():
返回文件对象当前所处的位置,它是从文件开头开始算起的字节数。
f.seek(offset,from_what):
改变文件对象所处的位置。
offset是相对参考位置的偏移量,from_what取值0(文件头,默认)、1(当前位置)、2(文件尾)表示参考位置。
f.close():
关闭文件对象。
这些都是很常用的方法,当然文件对象不止这些方法。
根据打开的模式不同,open()返回的文件对象类型也不同:
TextIOWrapper:
文本模式,返回TextIOWrapper对象。
BufferedReader:
读二进制,即rb,返回BufferedReader对象。
BufferedWriter:
写和追加二进制,即wb、ab,返回BufferedWriter对象。
BufferedRandom:
读/写模式,即含有+的模式,返回BufferedRandom对象。
可以在这些文件对象上运行dir()或help(),查看它们所有的方法。
1.4操作函数目录
1.4.1对文件、文件夹的操作
需要涉及到os模块和shutil模块。
得到当前工作目录,即当前Python脚本工作的目录路径:
os.getcwd()
返回指定目录下的所有文件和目录名:
os.listdir()
函数用来删除一个文件:
os.remove()
删除多个目录:
os.removedirs(r"
c:
\python"
检验给出的路径是否是一个文件:
os.path.isfile()
检验给出的路径是否是一个目录:
os.path.isdir()
判断是否是绝对路径:
os.path.isabs()
检验给出的路径是否真地存:
os.path.exists()
返回一个路径的目录名和文件名:
os.path.split()
例如:
os.path.split('
/home/swaroop/byte/code/poem.txt'
结果:
('
/home/swaroop/byte/code'
poem.txt'
分离扩展名:
os.path.splitext()
>
t=os.path.splitext("
d:
\d.txt"
t[0]
\\d'
t[1]
.txt'