python---基本知识22之文件操作举例

2018-01-30  本文已影响55人  hello_我的哥

例子1:我们复制一个文本文件到另一个文本文件:

首先大致分为3步,第一打开文本文件A,打开文本文件B:

file_a=open('a.text','r',encoding='utf-8')

file_b=open('b.text','w',encoding='utf-8')

第二步得到文件A的内容并往文件B写入:

a_content=file_a.read()

file_b.write(a_content)

第三步关闭文件A,文件B:

file_a.close()

file_b.close()

就完成了,你会发现太简单了,就6行代码!

这种情况是针对小文件,那么如果是大文件怎么办呢?肯定不能一次把1G或者10G全部加载到内存吧,那样的话,电脑就炸了。这样的话,我们只能一小部分一小部分的去读,在一些部分一小部分的写,下面写两种方式:

第一种方式,大家可以看到喔复制的是androidstdio的安装包,有两个G,我用时间算了一下,14秒作用的时间,还是挺快的,使用的是遍历file_a迭代器,但是这种方法不是很好,因为按照这种方式迭代是根据换行符作边界的,那如果没有换行符,就出大问题了,所以就有第二种方式

import time

start=time.clock()

file_a=open('D:\development_tool/android_stdio/android-studio-bundle-162.4069837-windows.exe','rb') file_b=open('b.exe','ab')

for i in file_a:

file_b.write(i)

file_a.close()

file_b.close()

end=time.clock()

print(end-start)

第二种方式:我们每次都读取1兆往里面写:当取出来没内容的时候,就不写了

import time

start=time.clock()

file_a=open('D:\development_tool/android_stdio/android-studio-bundle-162.4069837-windows.exe','rb') file_b=open('b.exe','ab')

while True:

    a_content=file_a.read(10240)

    if len(a_content)==0:

        break

    file_b.write(a_content)

file_a.close() 

file_b.close()

end=time.clock()

print(end-start)

例子2:文件分类处理:

import os

import shutil

os.chdir('text')

list_dir=os.listdir('./')

for i in list_dir:

    index=i.rfind('.')

    suffix=i[index+1:]

if not os.path.exists(suffix):

    os.mkdir(suffix)

shutil.move(i,suffix)

例子3:把文件夹以及文件输出成一个文本,便于查看:这个例子也没什么难点,我们写程序主要就是要搞清楚流程,一步一步的来,不能操之过急,一步一步分解,最终就能全部写完了;

import os

def printfile(path,file):

    dir_list=os.listdir(path)

    for dir in dir_list:

    newaddress=path+'/'+dir

     if os.path.isdir(newaddress):

        file.write(newaddress+"\n")

    printfile(newaddress,file)

    else:

        file.write('\t'+dir+"\n")

file=open('text/data.text','a')

printfile('text',file)

file.close()

上一篇 下一篇

猜你喜欢

热点阅读