Convert bash script to python
Question: I have a bash script and i want to convert it to python.

This is the script :

    
    
    mv $1/positive/*.$3 $2/JPEGImages
    mv $1/negative/*.$3 $2/JPEGImages
    mv $1/positive/annotations/*.xml $2/Annotations
    mv $1/negative/annotations/*.xml $2/Annotations
    cut -d' ' -f1 $1/positive_label.txt > $4_trainval.txt
    

My problem is : i didn't found how to past positive_label.txt in
$4_trainval.txt.

This is my try, it's the first time i work with python. please help me to make
it work. thank you.

    
    
    import sys # Required for reading command line arguments
    import os # Required for path manipulations
    from os.path import expanduser # Required for expanding '~', which stands for home folder. Used just in case the command line arguments contain "~". Without this, python won't parse "~"
    import glob
    import shutil
    
    
    def copy_dataset(arg1,arg2,arg3,arg4):
        path1 = os.path.expanduser(arg1)
        path2 = os.path.expanduser(arg2) # 
        frame_ext = arg3 # File extension of the patches  
        pos_files = glob.glob(os.path.join(path1,'positive/'+'*.'+frame_ext))
        neg_files = glob.glob(os.path.join(path1,'negative/'+'*.'+frame_ext))
        pos_annotation = glob.glob(os.path.join(path1,'positive/annotations/'+'*.'+xml))
        neg_annotation = glob.glob(os.path.join(path1,'negative/annotations/'+'*.'+xml))
    
        #mv $1/positive/*.$3 $2/JPEGImages
        for x in pos_files:
            shutil.copyfile(x, os.path.join(path2,'JPEGImages'))
    
        #mv $1/negative/*.$3 $2/JPEGImages
        for y in neg_files:
            shutil.copyfile(y, os.path.join(path2,'JPEGImages'))
    
        #mv $1/positive/annotations/*.xml $2/Annotations
        for w in pos_annotation:
            shutil.copyfile(w, os.path.join(path2,'Annotations'))
    
        #mv $1/negative/annotations/*.xml $2/Annotations
        for z in neg_annotation:
            shutil.copyfile(z, os.path.join(path2,'Annotations'))
    
        #cut -d' ' -f1 $1/positive_label.txt > $4_trainval.txt
        for line in open(path1+'/positive_label.txt')
            line.split(' ')[0]
    


Answer: Without testing, something like that should works.

    
    
    #cut -d' ' -f1 $1/positive_label.txt > $4_trainval.txt
    positive = path1+'/positive_label.txt'
    path4 = os.path.join(arg4, '_trainval.txt')
    
    with open(positive, 'r') as input_, open(path4, 'w') as output_:
        for line in input_.readlines():
            output_.write(line.split()[0] + "\n")
    

This code defines the two files we will work with and opens both. The first is
opened in read mode, the second in write mode. For each line in the _input_
file, we write the first find data separated by a space to the _output_ file.

Check [Reading and Writing Files in
Python](http://www.pythonforbeginners.com/files/reading-and-writing-files-in-
python) for more informations about files into Python.

