python之文件的复制

112 阅读2分钟
原文链接: click.aliyun.com

                                        

                                            
 import 
                                                os
                                            

                                            
 old_file_name 
                                                = input
                                                    ("Please input what's file do you want to copy go:"
                                                        )
                                            

                                            
 fp 
                                                = open
                                                    (old_file_name)
                                            

                                            
 content 
                                                = fp.read()                                                    

                                            

                                            index 
                                                = old_file_name.rfind(
                                                    '.')                                                        

                                            

                                            new_file_name 
                                                = old_file_name[:index]
                                                    +"[复件]"
                                                        +old_file_name[index:]                                                            

                                            

                                            dp 
                                                = open
                                                    (new_file_name,'w'
                                                        )
                                            

                                            
dp.write(content)

                                        

                                    

上面代码是文件的复制,我们的思路是这样的:

你可以打开一个存在的文件,然后去读取这个文件的内容,然后去创建一个新的文件,这个文件的名字是旧文件名字后面加上[复件]这样的字体。然后把我们刚刚在旧文件中读到的内容写到新文件里面去。关闭两个文件就好啦。

第二行让用户输入你想复制的文件,这个文件必须存在,而且最好是绝对路径。

第四行是打开我们要旧文件,用content变量是保存旧文件里面的内容

第五行去查找old_file_name这个变量的字符串中最右边出现的一个'.'符号的下标。

第六行是给new文件命名,然后赋予给变量new_file_name这个变量啊

那么上面有一个问题,如果说我们要复制一个你不知多大的文件的时候,千万不要用read,因为read会把所有的内容都读进内存,如果这个文件很大你的内存就崩了,也不要用readlines因为如果你的文件内容只有一行,这一行的数据很大,那你的内存也会被影响到。

可以用下面代码:


                                        

                                            
 import 
                                                os
                                            

                                            
 old_file_name 
                                                = input
                                                    ("Please input what's file do you want to copy go:"
                                                        )
                                            

                                            
 fp 
                                                = open
                                                    (old_file_name)
                                            

                                            
 index 
                                                = old_file_name.rfind(
                                                    '.')                                                        

                                            

                                            new_file_name 
                                                = old_file_name[:index]
                                                    +"[复件]"
                                                        +old_file_name[index:]                                                            

                                            

                                            dp 
                                                = open
                                                    (new_file_name,'w'
                                                        )
                                            

                                            
 while 
                                                True:                                                    

                                            

                                                
                                                content = 
                                                    fp.read(1024
                                                        )
                                            

                                            
     
                                                if len
                                                    (content) =
                                                        = 0
                                                            :
                                            

                                            
         
                                                break
                                            

                                            

                                                
                                                dp.write(content)
                                            

                                            
fp.close()

                                            
dp.close()

                                        

                                    

上面代码的第8行是读这个文件的前1024个字符,然后再去判断读出来的内容是不是为空的,如果是的话就break退出循环,如果不是就就把内容写入新文件中


本文转自 周子琪 51CTO博客,原文链接:http://blog.51cto.com/izhouyu/1967644