刚学Python,写了一个文件复制

刚学Python,写了一个文件复制

import os
import time
import shutil

today = time.strftime('%Y%m%d')
now = time.strftime('%H%M%S')

from_path    =   "C:\\Program Files\\COSCO\\vsagentlib"

newdir  =   ''.join((''.join((today,'-')),now))

to_path    =   "c:\\image\\"+today
if not os.path.exists(from_path):
    os.mkdir(to_path) # make directory
    print 'Successfully created directory', to_path

to_path    =   to_path+'\\'+newdir

if not os.path.exists(to_path):
    os.mkdir(to_path) # make directory
    print 'Successfully created directory2', to_path

for file in os.listdir(from_path):
    type    =   os.path.splitext(file)[1]
    if type == ".pbd" or type == ".exe" or type == ".ini":
        print from_path
        print to_path
      
        #shutil.copy(from_path+'\\'+file, os.path.join("c:\\image\\"+"backup", file))
        shutil.copy(from_path+'\\'+file, os.path.join(to_path, file))
目录分隔建议写成'/',又简单又不会出问题 ,在windows下一样可用。另外:

newdir  =   ''.join((''.join((today,'-')),now))

这句看似多余,为不什么不直接

newdir = today + '-' + 'now'

这样更简单啊。

创建目录可以考虑使用os.makedirs,可以创建多级目录
路过,学习了
import os
import time
import shutil

class   Copyfile:
    def __init__(self):
        global  today,now,from_path,newdir,to_path,to_ftp
      
        today = time.strftime('%Y%m%d')
        now = time.strftime('%H%M%S')
        #程序编译目录
        from_path    =  "E:\\Compile\\COSCO"
        #程序更新目录
        to_ftp       =  "E:\\FTP\\UPDATE"
        
        newdir  =   ''.join((''.join((today,'-')),now))

        to_path    =   "E:\\backup\\"+today
        if not os.path.exists(to_path):
            os.mkdir(to_path) # make 当天的目录
            print 'Successfully created directory', to_path
        #备份目录年月日-时分秒
        to_path    =   to_path+ os.sep +newdir
        if not os.path.exists(to_path):
            os.mkdir(to_path) # make 时分秒目录
            print 'Successfully created directory2', to_path
   
    def cfile(self):
        for file in os.listdir(from_path):
            type    =   os.path.splitext(file)[1]
            if type == ".pbd" or type == ".exe" or type == ".ini":
                print from_path
                print to_path
               
                #shutil.copy(from_path+'\\'+file, os.path.join("c:\\image\\"+"backup", file))
                #备份目录
                shutil.copy(from_path+'\\'+file, os.path.join(to_path, file))
                #FTP目录
                shutil.copy(from_path+'\\'+file, os.path.join(to_ftp, file))
if  __name__    ==  '__main__':   
    cf  =   Copyfile()
    cf.cfile()


QUOTE:
原帖由 limodou 于 2007-1-10 17:43 发表
目录分隔建议写成'/',又简单又不会出问题 ,在windows下一样可用。另外:

newdir  =   ''.join((''.join((today,'-')),now))

这句看似多余,为不什么不直接

newdir = today + '-' + 'now'

这样更简单 ...

听说join比+的效率要高,我也不知道了,做为一个新手,也练练手,谢谢你的提示,makedirs这个方法不错
os.sep或\\ 或/ 都可以昂
效率高也要看场合,这么简单的地方,只有两项联接,没必要。

os.sep是可以,不过没必要。

简单有时更重要。


QUOTE:
原帖由 limodou 于 2007-1-12 11:15 发表
效率高也要看场合,这么简单的地方,只有两项联接,没必要。

os.sep是可以,不过没必要。

简单有时更重要。

嗯,同意!
import os
import time
import shutil

class   Copyfile:
    def __init__(self):
        global  today,now,from_path,newdir,to_path,to_ftp
        
        today = time.strftime('%Y%m%d')
        now = time.strftime('%H%M%S')
        #程序编译目录
        from_path    =  "E:\\Compile\\COSCO"
        #程序更新目录
        to_ftp       =  "E:\\FTP\\UPDATE"
        
        newdir  =   ''.join((''.join((today,'-')),now))
        
        def file_exit(self,file_path):
            if  not os.path.exists(file_path):
                os.makedirs(file_path)
                print 'Successfully created directory2', file_path
        
        to_path    =   "E:\\backup\\"+today
        
        file_exit(self,from_path)
        file_exit(self,to_ftp)
        file_exit(self,to_path)
        #if not os.path.exists(to_path):
        #    os.mkdir(to_path) # make 当天的目录
        #    print 'Successfully created directory', to_path
        #备份目录年月日-时分秒
        to_path    =   to_path+ os.sep +newdir
        file_exit(self,to_path)
        #if not os.path.exists(to_path):
        #    os.mkdir(to_path) # make 时分秒目录
        #    print 'Successfully created directory2', to_path
   
    def cfile(self):
        for file in os.listdir(from_path):
            type    =   os.path.splitext(file)[1]
            if type == ".pbd" or type == ".exe" or type == ".ini":
                print from_path
                print to_path
               
                #shutil.copy(from_path+'\\'+file, os.path.join("c:\\image\\"+"backup", file))
                #备份目录
                shutil.copy(from_path+'\\'+file, os.path.join(to_path, file))
                #FTP目录
                shutil.copy(from_path+'\\'+file, os.path.join(to_ftp, file))
if  __name__    ==  '__main__':   
    cf  =   Copyfile()
    cf.cfile()

我想把 file_exit 函数放到与cfile函位同样的位置,该怎样改