Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
78 views
in Technique[技术] by (71.8m points)

How to find and copy specific directory and its content to another location using Python?

I have a list of cron directories with log files inside them :

anti@Data:~/Documents/housekeeping/api1$ find $HOME -type d -name "cron"
/home/anti/Documents/housekeeping/api2/code2/cron
/home/anti/Documents/housekeeping/api2/code1/cron
/home/anti/Documents/housekeeping/api3/code/cron
/home/anti/Documents/housekeeping/api1/cron

I am trying to copy all these cron directories into another location test:

This is i have got till so far :

import subprocess
import os
import shutil
from pathlib import Path

dir_path = os.path.dirname(os.path.realpath(__file__))
#subprocess.call(['sh', os.path.join(dir_path,'./del.sh')])
source_dir = os.path.join(dir_path,'housekeeping/')
target_dir = os.path.join(dir_path,'test/')
print("Source : ",source_dir)
print("Destination : ",target_dir)

try:
    if os.path.exists(target_dir):
        shutil.rmtree(target_dir)
        shutil.copytree(source_dir, target_dir)
except OSError as e:
        print('Directory not copied. Error: %s' % e)

But this copies entire content of the directory housekeeping, but i want to copy only the cron directories and its content to target path test

question from:https://stackoverflow.com/questions/65916541/how-to-find-and-copy-specific-directory-and-its-content-to-another-location-usin

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to use the copy function in shutil, like this:

shutil.copy(the directory you want to copy, the directory you want to copy it into, *, follow_symlinks=True

What you ould do it delete all the directories apart from the one you want like this:

import os  
     
file = 'the directory name'
    
# File location  
location = "C:/Python/PythonTest/" #as an example put your own location for yuor file
    
path = os.path.join(location, file)  
    
# Remove the file  
os.remove(path)

perhaps run a for loop to say it not a cron file then delete?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...