Thursday, May 14, 2015

Python: File operations


Abstract: get attributes with a given file, namely file name, file head , file tail, copy file et.


The script:
import os
import shutil #copy file

#class
class os_file:
     def __init__(self, file):
          self.file=file

     def file_name(self):
          items=self.file.split('/')
          file_name=items[-1]
          return file_name

     def name_head(self):
          file_name=self.file_name()
          head, tail=file_name.split('.')
          return(head)

     def name_tail(self):
          file_name=self.file_name()
          head, tail=file_name.split('.')
          return(tail)

     def change_tail(self, tail):
          head=self.name_head()
          new_name=head+'.'+tail
          return new_name

     def file_size(self):
          statinfo = os.stat(self.file)
          file_size=statinfo.st_size
          return(file_size)

     def format_dir(self, dir):
          if not dir[-1] == '/':
               dir=dir+'/'
          if not os.path.isdir(dir):
               os.mkdir(dir, 0755)
          return dir

     def cp_file(self, dir):
          shutil.copy(self.file, dir)
          out_file=self.format_dir(dir)+self.file_name()
          return out_file

     def soft_cp(self, dir):
          out_file=self.format_dir(dir)+self.file_name()
          if os.path.isfile(out_file):
               return 'no'
          else:
               shutil.copy(self.file, dir)
          return out_file

############
#main program
f=os_file('/home/yuan/data_2/test/test_R1.fastq')
#
print 'File name: ', f.file_name()
print 'Head of file name: ', f.name_head()
print 'Tail of file name: ', f.name_tail()
print 'New file name: ', f.change_tail('fq')
print 'file size: ', f.file_size()
print 'copy file even if it exits:', f.cp_file('/home/yuan/data_2/test/sub')
print 'copy file only if it doesnot exit:', f.soft_cp('/home/yuan/data_2/test/sub')


Writing date: 20150514

No comments:

Post a Comment