Entering edit mode
3.5 years ago
Debut
▴
20
I have a script that allows to download several files from a URL. These files are placed directly in a folder that takes the name of the species entered by the user. I would like after 3 months this folder to be deleted in an automatic way.need help please. I don't know how I can position "remove" here is a part of the script:
species = input("Bacteria species ? : ")
TypeSeq= input ("fna ? or faa ? :")
species = input("Bacteria species ? : ")
TypeSeq= input ("fna ? ou faa ?")
if data["#Organism/Name"].str.contains(species, case = False).any():
print(data.loc[data["#Organism/Name"].str.contains(species, case = False)]['Status'].value_counts())
FTP_list = data.loc[data["#Organism/Name"].str.contains(species, case = False)]["FTP Path"].values
if TypeSeq == "faa" :
if not os.path.exists(species):
os.makedirs(species)
for url in FTP_list:
try :
parts = urllib.parse.urlparse(url)
parts.path
posixpath.basename(parts.path)
suffix = "_protein.faa.gz"
prefix = posixpath.basename(parts.path)
print(prefix+suffix)
path = posixpath.join(parts.path, prefix+suffix)
ret = parts._replace(path=path)
sequence = wget.download(urllib.parse.urlunparse(ret), out=species)
except :
print ("")
Write a script that deletes files that are older than three months (or use a
find -exec rm {}
) and run it using a cron job so it will delete old files at defined periods of time.Strictly speaking, this is not a bioinformatics question and might be marked off topic and deleted.
Thanks a lot, but I could do this in python right?
I can't do it in the same python script? because the species name is entered as input? I don't see how I could connect two scripts in this way sorry
Every time you run this script, you'd like for it to look for files older than 3 months in the same species-named directory and delete them? If that's the requirement, you can definitely do that - google "python find files older than three months" and "python delete files". There should be libraries/modules that will help you do these things.
I would like to add a function in my script that allows me to delete the folder created after 3 months. I don't know if this is possible
It would be unadvisable to bake that logic into this script. You would essentially have to rerun the script as a scheduled cronjob, and build in logic to skip all of the unnecessary other computations that generated those files in the first place - or you'd have to make this script run in the background as a daemon for 3 months checking at regular intervals whether the files have reached the expiry date.
I would make a separate script for this completely and do as Ram said: a script which is executed by cron to tidy the files up once their created date reaches 3 months (assuming no other processes are going to touch those files and modify the timestamps). This script could be done in python, but it would be simpler to use
bash
, but crucially these are separate scripts.Okay, I'll look into it. Thank you very much.
Either your script needs to run for the three months, or it needs to create another script that deletes the files and set its execution to be triggered in 3 months. The former is ridiculous, and the latter can be achieved using cron jobs. I recommend not setting auto-delete/self-destruct scripts, things can get unreliable and deletion should never be unsupervised.
Okay, I'll look into it. Thank you very much.
Please do not delete posts that users commented on and invested effort into. Just leave it as is. It may serve as knowledge repository to others in the future.