python学习之文件与文件系统(一)

(一)文件操作基础
1.open()函数:该函数是内建的文件打开函数。文件实际上也是python的一种数据类型。当使用python的内建函数open打开一个文件后,就返回一个文件对象。函数原型如下:
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
这里罗列一下各参数的含义:
filename:要打开的文件名
mode:可选参数,文件打开模式
bufsize:可选参数,缓冲区大小
encoding:文件编码类型
errors:编码错误处理方法
newline:控制通用换行符模式的行为
closefd:控制在关闭文件时是否彻底关闭文件
这些字符可以组合起来表示对文件的操作模式,如‘rb'表示以只读模式打开二进制文件;’wt'表示以可写模式打开文本文件。bufsize为0表示打开文件不用缓冲,为1时表示进行缓冲,负值时表示使用系统默认值,任何其他值表示使用缓冲的字节数。encoding表示文件的编码类型,例如:‘gbk','utf-8’等,以避免读取文件内容出现乱码。
mode的主要分为下面几种:
r:只读(默认)
w:可写,会清除文件的内容
a:附加数据
b:二进制数据格式
x:新建一个文件,可写
+:打开文件直接更新
t:文本模式,默认
2.常用的文件操作如下:
file.read([n]):将整个文件读入到字符串中或者指定n字节。
file.readline([n]):读入文件的一行到字符串中
file.readlines():将整个文件按行读入列表当中。
file.writes(s):向文件中写入字符串
file.writelines(lines):向文件中写入一行数数据列表
file.close():关闭打开的文件
python处理文件中的数据,可以使用while语句来循环读取文件中的行:
while True:
    line=f.readline()
if not line:
    break
也可以用for来遍历文件中所有的行:
for line in f:
    pass
示例如下:
def file_hdl(name='python.txt'):
         f=open(name)
         res=0
         i=0
         for line in f:
                  i+=1
                  print('第%s行的数据为:'% line.strip(),line)#focus on the format
                  print(line)
                  res+=int(line)
         print("the sum of these numbers",res)
         f.close()
if __name__== '__main__':
         file_hdl()
这段代码定义了一个函数,它的功能是打开一个文件,迭代处理文件中的每一行数据,并把每一行数据转换为一个整数,然后累加并输出。
一般情况下载文件处理之前需要打开文件,文件处理结束之后还需要关闭来文件。在python中可以使用with语句来管理文件的打开和关闭。上面的代码可以改写成下面的:
def file_hdl(name='python.txt'):
         with open(name) as f:
                  res=0
                  i=0
                  for line in f:
                           i+=1
                           print(line.strip())
                           res+=int(line)
                  print("the sum of these numbers",res)
if __name__== '__main__':
         file_hdl()
2.用fileinput操作文件
fileinput模块提供了一个以行模式循环处理一个或者多个文件内容,它实现了对文件中行的懒惰迭代,读取时不需要把文件内容放入内存,这样可以提高程序的效率。
fileinput模块中常用的函数有:
input():返回能够用于迭代一个或多个文件中所有行的对象。
filename():返回当前文件的名称。
lineno():返回当前读取行的数量。
isfirstline():返回当前行是否是文件的第一行。
filelineno():返回当前读取行在文件中的行数。
示例如下:
import fileinput
def demo_fileinput():
         with fileinput.input('python.txt') as lines:
                  for line in lines:
                           print("the line number is %d"%fileinput.lineno())
                           print(line.strip())
                  print(fileinput.filename())
if __name__=='__main__':
         demo_fileinput()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值