15

I need to copy all html files inside the same directory with another name and I need to navigate all directories inside the source directory.

Here is my code so far,

import os
import shutil
os.chdir('/') 

dir_src = ("/home/winpc/test/copy/")

for filename in os.listdir(dir_src):
    if filename.endswith('.html'):
        shutil.copy( dir_src + filename, dir_src)
    print(filename)
YLJ
  • 2,940
  • 2
  • 18
  • 29
Kit
  • 273
  • 3
  • 5
  • 16
  • So basically *renaming* each file? `os.rename` and `glob` might help – Taku Jul 07 '17 at 15:48
  • Actually i do not need to rename.I need to remain original file as it is.I need to get a copy to same folder with another name – Kit Jul 07 '17 at 15:55
  • Why not issue a shell command? The `find` and `copy` functions all have recursive switches that will alleviate the problem. – Prune Jul 07 '17 at 16:30

1 Answers1

17

Solution

import os
import shutil

def navigate_and_rename(src):
    for item in os.listdir(src):
        s = os.path.join(src, item)
        if os.path.isdir(s):
            navigate_and_rename(s)
        else if s.endswith(".html"):
            shutil.copy(s, os.path.join(src, "newname.html"))    

dir_src = "/home/winpc/test/copy/"
navigate_and_rename(dir_src)

Explanation

Navigate all files in source folder including subfolders

import os
def navigate(src):
    for item in os.listdir(src):
        s = os.path.join(src, item)
        if os.path.isdir(s):
            navigate(s)
        else:
            # Do whatever to the file

Copy to the same folder with new name

import shutil
shutil.copy(src_file, dst_file)

Reference

Checkout my answer to another question.

YLJ
  • 2,940
  • 2
  • 18
  • 29