python读写、创建⽂件的⽅法(必看)python中对⽂件、⽂件夹(⽂件操作函数)的操作需要涉及到os模块和shutil模块。
得到当前⼯作⽬录,即当前Python脚本⼯作的⽬录路径: os.getcwd()
返回指定⽬录下的所有⽂件和⽬录名:os.listdir()
函数⽤来删除⼀个⽂件:os.remove()
删除多个⽬录:os.removedirs(r“c:\python”)
检验给出的路径是否是⼀个⽂件:os.path.isfile()
检验给出的路径是否是⼀个⽬录:os.path.isdir()
判断是否是绝对路径:os.path.isabs()
检验给出的路径是否真地存:ists()
返回⼀个路径的⽬录名和⽂件名:os.path.split() eg os.path.split('/home/swaroop/byte/') 结果:('/home/swaroop/byte/code', '')
分离扩展名:os.path.splitext()
获取路径名:os.path.dirname()
获取⽂件名:os.path.basename()
运⾏shell命令: os.system()
读取和设置环境变量:os.getenv() 与os.putenv()
给出当前平台使⽤的⾏终⽌符:os.linesep Windows使⽤'\r\n',Linux使⽤'\n'⽽Mac使⽤'\r'
指⽰你正在使⽤的平台:os.name 对于Windows,它是'nt',⽽对于Linux/Unix⽤户,它是'posix'
重命名:os.rename(old, new)
创建多级⽬录:os.makedirs(r“c:\python\test”)
创建单个⽬录:os.mkdir(“test”)
获取⽂件属性:os.stat(file)
修改⽂件权限与时间戳:os.chmod(file)
终⽌当前进程:os.exit()
获取⽂件⼤⼩:size(filename)
⽂件操作:
os.mknod("") 创建空⽂件
fp = open("",w) 直接打开⼀个⽂件,如果⽂件不存在则创建⽂件
关于open 模式:
w 以写⽅式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新⽂件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以⼆进制读模式打开
wb 以⼆进制写模式打开 (参见 w )
ab 以⼆进制追加模式打开 (参见 a )
rb+ 以⼆进制读写模式打开 (参见 r+ )
wb+ 以⼆进制读写模式打开 (参见 w+ )
ab+ 以⼆进制读写模式打开 (参见 a+ )
fp.write(str) #把str写到⽂件中,write()并不会在str后加上⼀个换⾏符
fp.writelines(seq) #把seq的内容全部写到⽂件中(多⾏⼀次性写⼊)。这个函数也只是忠实地写⼊,不会在每⾏后⾯加上任何东西。
fp.close() #关闭⽂件。python会在⼀个⽂件不⽤后⾃动关闭⽂件,不过这⼀功能没有保证,最好还是养成⾃⼰关闭的习惯。如果⼀个⽂件在关闭后还对其进⾏操作会产⽣ValueError
fp.flush() #把缓冲区的内容写⼊硬盘
fp.fileno() #返回⼀个长整型的”⽂件标签“
fp.isatty() #⽂件是否是⼀个终端设备⽂件(unix系统中的)
<() #返回下⼀⾏,并将⽂件操作标记位移到下⼀⾏。把⼀个file⽤于for … in file这样的语句时,就是调⽤next()函数来实现遍历的。
fp.seek(offset[,whence]) #将⽂件打操作标记移到offset的位置。这个offset⼀般是相对于⽂件的开头来
计算的,⼀般为正数。但如果提供了whence参数就不⼀定了,whence可以为0表⽰从头开始计算,1表⽰以当前位置为原点计算。2表⽰以⽂件末尾为原点进⾏计算。需要注意,如果⽂件以a或a+的模式打开,每次进⾏写操作时,⽂件操作标记会⾃动返回到⽂件末尾。
⽬录操作:
os.mkdir("file") 创建⽬录
复制⽂件:
复制⽂件夹:
重命名⽂件(⽬录)
移动⽂件(⽬录)
删除⽂件
删除⽬录
<("dir") 空⽬录、有内容的⽬录都可以删
转换⽬录
os.chdir("path") 换路径
Python读写⽂件
1.open使⽤open打开⽂件后⼀定要记得调⽤⽂件对象的close()⽅法。⽐如可以⽤try/finally语句来确保最后能关闭⽂件。
file_object = open('')
try:
all_the_text = ad( )
finally:
file_object.close( )
注:不能把open语句放在try块⾥,因为当打开⽂件出现异常时,⽂件对象file_object⽆法执⾏close()⽅法。
2.读⽂件读⽂本⽂件
input = open('data', 'r')
#第⼆个参数默认为r
input = open('data')
读⼆进制⽂件
input = open('data', 'rb')
读取所有内容
file_object = open('')
try:
all_the_text = ad( )
finally:
file_object.close( )
读固定字节
file_object = open('abinfile', 'rb')
try:
while True:
chunk = ad(100)
if not chunk:
break
do_something_with(chunk)
finally:
file_object.close( )
读每⾏
list_of_all_the_lines = adlines( )
如果⽂件是⽂本⽂件,还可以直接遍历⽂件对象获取每⾏:
for line in file_object:
process line
3.写⽂件写⽂本⽂件
output = open('data', 'w')
写⼆进制⽂件
output = open('data', 'wb')
追加写⽂件
output = open('data', 'w+')
写数据
file_object = open('', 'w')
file_object.write(all_the_text)
file_object.close( )
写⼊多⾏
file_object.writelines(list_of_text_strings)
注意,调⽤writelines写⼊多⾏在性能上会⽐使⽤write⼀次性写⼊要⾼。
在处理⽇志⽂件的时候,常常会遇到这样的情况:⽇志⽂件巨⼤,不可能⼀次性把整个⽂件读⼊到内存中进⾏处理,例如需要在⼀台物理内存为 2GB 的机器上处理⼀个 2GB 的⽇志⽂件,我们可能希望每次只处理其中 200MB 的内容。
在 Python 中,内置的 File 对象直接提供了⼀个 readlines(sizehint) 函数来完成这样的事情。以下⾯的代码为例:
file = open('test.log', 'r')sizehint = 209715200 # 200Mposition = 0lines = adlines(sizehint)while ll() - position < 0: position = ll() lines = adlines(sizehint)
每次调⽤ readlines(sizehint) 函数,会返回⼤约 200MB 的数据,⽽且所返回的必然都是完整的⾏数据,⼤多数情况下,返回的数据的字节数会稍微⽐ sizehint 指定的值⼤⼀点(除最后⼀次调⽤ readlines(sizehint) 函数的时候)。通常情况下,Python 会⾃动将⽤户指定的 sizehint 的值调整成内部缓存⼤⼩的整数倍。
file在python是⼀个特殊的类型,它⽤于在python程序中对外部的⽂件进⾏操作。在python中⼀切都是对象,file也不例外,file 有file的⽅法和属性。下⾯先来看如何创建⼀个file对象:
file(name[, mode[, buffering]])
file()函数⽤于创建⼀个file对象,它有⼀个别名叫open(),可能更形象⼀些,它们是内置函数。来看看它的参数。它参数都是以字符串的形式传递的。name是⽂件的名字。
mode是打开的模式,可选的值为r w a U,分别代表读(默认)写添加⽀持各种换⾏符的模式。⽤w或a模式打开⽂件的话,如果⽂件不存在,那么就⾃动创建。此外,⽤w模式打开⼀个已经存在的⽂件时,原有⽂件的内容会被清空,因为⼀开始⽂件的操作的标记是在⽂件的开头的,这时候进⾏写操作,⽆疑会把原有的内容给抹掉。由于历史的原因,换⾏符在不同的系统中有不同模式,⽐如在 unix中是⼀个\n,⽽在windows中是‘\r\n',⽤U模式打开⽂件,就是⽀持所有的换⾏模式,也就说‘\r' '\n' '\r\n'都可表⽰换⾏,会有⼀个tuple⽤来存贮这个⽂件中⽤到过的换⾏符。不过,虽说换⾏有多种模式,
读到python中统⼀⽤\n 代替。在模式字符的后⾯,还可以加上+ b t这两种标识,分别表⽰可以对⽂件同时进⾏读写操作和⽤⼆进制模式、⽂本模式(默认)打开⽂件。
buffering如果为0表⽰不进⾏缓冲;如果为1表⽰进⾏“⾏缓冲“;如果是⼀个⼤于1的数表⽰缓冲区的⼤⼩,应该是以字节为单位的。
file对象有⾃⼰的属性和⽅法。先来看看file的属性。
closed #标记⽂件是否已经关闭,由close()改写
encoding #⽂件编码
mode #打开模式
name #⽂件名
newlines #⽂件中⽤到的换⾏模式,是⼀个tuple
softspace #boolean型,⼀般为0,据说⽤于print
file的读写⽅法:python怎么读文件夹下的文件夹
#读⼀⾏,如果定义了size,有可能返回的只是⼀⾏的⼀部分
#把⽂件每⼀⾏作为⼀个list的⼀个成员,并返回这个list。其实它的内部是通过循环调⽤readline()来实现的。如果提供size参数,size是表⽰读取内容的总长,也就是说可能只读到⽂件的⼀部分。
F.write(str)
#把str写到⽂件中,write()并不会在str后加上⼀个换⾏符
F.writelines(seq)
#把seq的内容全部写到⽂件中。这个函数也只是忠实地写⼊,不会在每⾏后⾯加上任何东西。
file的其他⽅法:
F.close()
#关闭⽂件。python会在⼀个⽂件不⽤后⾃动关闭⽂件,不过这⼀功能没有保证,最好还是养成⾃⼰关闭的习惯。如果⼀个⽂件在关闭后还对其进⾏操作会产⽣ValueError
F.flush()
#把缓冲区的内容写⼊硬盘
F.fileno()
#返回⼀个长整型的”⽂件标签“
F.isatty()
#⽂件是否是⼀个终端设备⽂件(unix系统中的)
#返回⽂件操作标记的当前位置,以⽂件的开头为原点
<()
#返回下⼀⾏,并将⽂件操作标记位移到下⼀⾏。把⼀个file⽤于for ... in file这样的语句时,就是调⽤next()函数来实现遍历的。
F.seek(offset[,whence])
#将⽂件打操作标记移到offset的位置。这个offset⼀般是相对于⽂件的开头来计算的,⼀般为正数。但如果提供了whence参数就不⼀定了,whence可以为0表⽰从头开始计算,1表⽰以当前位置为原点计算。2表⽰以⽂件末尾为原点进⾏计算。需要注意,如果⽂件以a或a+的模式打开,每次进⾏写操作时,⽂件操作标记会⾃动返回到⽂件末尾。
#把⽂件裁成规定的⼤⼩,默认的是裁到当前⽂件操作标记的位置。如果size⽐⽂件的⼤⼩还要⼤,依据系统的不同可能是不改变⽂件,也可能是⽤0把⽂件补到相应的⼤⼩,也可能是以⼀些随机的内容加上去。
以上这篇python 读写、创建⽂件的⽅法(必看)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论