python读取文件并复制文件

要读取文件,首先当然就是获取文件,读取,然后关闭,这之间需要抓取下文件不存在的异常以保证程序的健壮性;文件的内容读取到了,接着写入内容到指定文件,步骤也是一样的:打开文件,写入,然后关闭

好了,现在开始第一步:读取文件的内容

def readFileAsLine(file_name):
    print ">>>>>复制的源文件是:",file_name,"<<<<<"
    li = []
    try:
        f = open(file_name,"r") # 只读模式打开
        line_content = f.read()
        while True:
            if line_content:
                li.append(line_content)
                try:
                    f.next()
                except:
                    print ">>>>>读取到文件:【", file_name, "】最后一行<<<<<"
                    break
            else:
                break
    except:
        print ">>>>>文件:【",file_name,"】不存在<<<<<"
    finally:
        if f:
            f.close()
    return li

这一段代码就是按行读取文件的内容,然后将每行内容追加到列表中,其中:

 

f = open(file_name,"r") # 只读模式打开

这一段代码,就是获取文件内容,这里需要抓取下目标文件不存在的异常(IOEXCEPTION);

至于open()具体用法可以通过输入open.__doc__来进一步获取

这段就算英文不怎么样,大体上应该也能顺下来,不行,还是有很多在线翻译的工具的;

意思就是使用opne()这个API方法可以打开一个文件,并返回一个文件对象;

注意这一句:This is the\npreferred way to open a file. 【这是打开一个文件的首先方法

好了,记住以后,要操作文件,打开一个文件,就使用open()来就行了;详细的可以参阅file.__doc__

这一段的文档内容有些长,记住其中的一个mode:r(只读),w(写入,会覆盖之前的),a(写入,不会覆盖之前);还有,需要处理IOError

接下来就是读取文件的内容了,

line_content = f.read()

这一段就是了,但是read()每次只读取一行,需要每一行都读取,就需要一行一行的读取下去,直到最后一行为止,说道这里当然就会想到循环了!

 

 while True:
            if line_content:
                li.append(line_content)
                try:
                    f.next()
                except:
                    print ">>>>>读取到文件:【", file_name, "】最后一行<<<<<"
                    break
            else:
                break

其中的next()是一个IO操作:指针转向下一行,如果为空,返回一个异常,抓取一下,保证程序的健壮性

这样就能将每一行的内容都读取到了,然后按行放入到列表对象中就可以了,这样就读取到目标文件的内容了,并且是以按行分割进行的

接着,就是进行第二步,将读取到的文件内容,写入到指定的文件中去

# 将读取到的文件内容写入到待操作的文件目录
def writeContenToFile(li,file_name):
    print ">>>>>等待写入的文件名称是:【",file_name,"】<<<<<"
    try:
        f = open(file_name,"a")
        for i in li:
            f.write(i)
    except:
        print ">>>>>文件:【",file_name,"】不存在<<<<<"
    finally:
        if f:
            f.close()

这一段写入,比读取要来的更加精简一些,但是效果丝毫不减!

 

 f = open(file_name,"a")

首先,第一步,打开待操作的文件,这里存在一个细节,如果模式为w或者a时,但是文件是不存在的话,python会创建这个目标文件

详见图中标红处【The file will be created if it doesn't exist\nwhen opened for writing or appending;】这当然就是边撸代码边读API的好处啦(闷头撸代码应该也能发现的);当然出于健壮性考虑,还是抓取了下异常;接着就是循环写入了。

最后一步,当然就是验证

文件确实创建出来了,两个文件的内容做下比对,发现也是一样的,好了,文件复制正式手工

下面贴上完整的代码

# -*- coding:utf-8 -*-
# 将文件:F:\python\html\index.html 复制到 F:\python\file\index.html下
# 按行读取文件内容,并将结果返回到列表中
def readFileAsLine(file_name):
    print ">>>>>复制的源文件是:",file_name,"<<<<<"
    li = []
    try:
        f = open(file_name,"r") # 只读模式打开
        line_content = f.read()
        while True:
            if line_content:
                li.append(line_content)
                try:
                    f.next()
                except:
                    print ">>>>>读取到文件:【", file_name, "】最后一行<<<<<"
                    break
            else:
                break
    except:
        print ">>>>>文件:【",file_name,"】不存在<<<<<"
    finally:
        if f:
            f.close()
    return li
# 将读取到的文件内容写入到待操作的文件目录
def writeContenToFile(li,file_name):
    print ">>>>>等待写入的文件名称是:【",file_name,"】<<<<<"
    try:
        f = open(file_name,"a")
        for i in li:
            f.write(i)
    except:
        print ">>>>>文件:【",file_name,"】不存在<<<<<"
    finally:
        if f:
            f.close()

# 待操作的文件
file_name = "F:\python\html\index.html"
# 读取文件内容
li = readFileAsLine(file_name)
for i in li:
    print i
# 待写入的文件
desc_file = "F:\python\\file\index.html"
# 操作写入
writeContenToFile(li,desc_file)

 

 

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值