python - 文件操作

本文介绍了Python中文件的基本操作,包括如何使用open函数打开文件、不同的读取和写入方法、文件对象的属性及方法等。此外还介绍了os模块中常用的文件操作函数。

1.open


使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。

try:

    f = open( ' thefile.txt ' )

except:

    print ”open file error“

open的第二个参数为打开方式, r为read(默认), w为write,a为附加, b为二进制, c当文件不存在时创建文件

 

2.读文件 


读取整个文件

try :
     all_the_text = f.read( )
finally :
      f.close( )

或者 all_the_text = f.readlines()

 

读取固定字节
try :
     while True:
         chunk = f.read( 100 )
         if not chunk:
              break 
         do_something_with(chunk)
finally :
    f.close( )

 

读一行

line = f.readline( )

 

读取多行

line=f.readlines(n)

 

如果文件是文本文件,还可以直接遍历文件对象获取每行: 

for line in f:
      process line

 

3.写文件 

写数据

f.write(all_the_text)

写入多行

f.writelines(list_of_text_strings)

注意,调用writelines写入多行在性能上会比使用write一次性写入要高。  


每次调用 readlines(sizehint) 函数,返回的必然都是完整的行数据。通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。

 

file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。file有file的方法和属性。

创建一个file对象:

file(name[, mode[, buffering]])

file()函数用于创建一个file对象,它有一个别名叫open(),它们是内置函数。name是文件的名字,mode 是打开模式,buffering如果为0表示不进行缓冲;如果为1表示进行“行缓冲“;如果是一个大于1的数表示缓冲区的大小,以字节为单位。

file属性:

closed #标记文件是否已经关闭,由close()改写

encoding #文件编码

mode #打开模式

name #文件名

newlines #文件中用到的换行模式,是一个tuple

file的读写方法:

F.read([size]) #size为读取的长度,以byte为单位

F.readline([size])

#读一行,如果定义了size,有可能返回的只是一行的一部分

F.readlines([size])

#把文件每一行作为一个list的一个成员,并返回这个list。它的是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
F.write(str)

#把str写到文件中,write()并不会在str后加上一个换行符

F.writelines(seq)

#把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

F.close()

#关闭文件。python会在一个文件不用后自动关闭文件。

F.flush()

#把缓冲区的内容写入硬盘

F.fileno()

#返回一个长整型的”文件标签“

F.isatty()

#文件是否是一个终端设备文件(unix系统中的)

F.tell()

#返回文件操作标记的当前位置,以文件的开头为原点

F.next()

#返回下一行,并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时,就是调用next()函数来实现遍历的。

F.seek(offset[,whence])

#将文件打操作标记移到offset的位置。offset一般是相对偏移,一般为正数。whence为 0表示从头计算,1表示以当前位置为原点计算,2表示以文件末尾为原点计算。如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

F.truncate([size])

#把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。

 

os模块中的文件操作:

os.path属性:

sep='/':用来分隔文件路径名的字符串

pathsep=':':用于分隔文件路径的字符串

curdir='.':当前工作目录的字符串名称

pardir='..':当前工作目录的父目录

  1.重命名:os.rename(old, new)

  2.删除:os.remove(file)

  3.列出目录下的文件:os.listdir(path)

  4.获取当前工作目录:os.getcwd()

  5.改变工作目录:os.chdir(newdir)

  6.创建多级目录:os.makedirs(r"c:\python\test")

  7.创建单个目录:os.mkdir("test")

  8.删除多个目录:os.removedirs(r"c:\python") #删除所给路径最后一个目录下所有空目录。

  9.删除单个目录:os.rmdir("test")

  10.获取文件属性:os.stat(file)

  11.修改文件权限与时间戳:os.chmod(file)

  12.执行操作系统命令:os.system("dir")

  13.启动新进程:os.exec(), os.execvp()

  14.在后台执行程序:osspawnv()

  15.终止当前进程:os.exit(), os._exit()

  16.分离文件名:os.path.split(r"c:\python\hello.py") ——> ("c:\\python", "hello.py")

  17.分离扩展名:os.path.splitext(r"c:\python\hello.py") ——> ("c:\\python\\hello", ".py")

  18.获取路径名:os.path.dirname(r"c:\python\hello.py") ——> "c:\\python"

  19.获取文件名:os.path.basename(r"r:\python\hello.py") ——> "hello.py"

  20.判断文件是否存在:os.path.exists(r"c:\python\hello.py") ——> True

  21.判断是否是绝对路径:os.path.isabs(r".\python\") ——> False

  22.判断是否是目录:os.path.isdir(r"c:\python") ——> True

  23.判断是否是文件:os.path.isfile(r"c:\python\hello.py") ——> True

  24.判断是否是链接文件:os.path.islink(r"c:\python\hello.py") ——> False

  25.获取文件大小:os.path.getsize(filename)

  26.*******:os.ismount("c:\\") ——> True

  27.搜索目录下的所有文件:os.path.walk()

 

glob.glob(path) : return a list of the paths matching the path. The path could be either absolute or relative, and can contain wildcards like *,?,[] etc.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值