Comment puis-je passer un jour à un script en Python?
J'ai un script pour supprimer des images de plus d'un jour.
Puis-je passer cette date comme un argument quand je l'appelle pour exécuter le script?
Exemple: Ce script delete_images.py
supprime les images de plus que d'une date (AAAA-MM-JJ)
python delete_images.py 2010-12-31
Script (travaux avec une date fixe (xDate variable))
import os, glob, time
root = '/home/master/files/' # one specific folder
#root = 'D:\\Vacation\\*' # or all the subfolders too
# expiration date in the format YYYY-MM-DD
### I have to pass the date from the script ###
xDate = '2010-12-31'
print '-'*50
for folder in glob.glob(root):
print folder
# here .jpg image files, but could be .txt files or whatever
for image in glob.glob(folder + '/*.jpg'):
# retrieves the stats for the current jpeg image file
# the tuple element at index 8 is the last-modified-date
stats = os.stat(image)
# put the two dates into matching format
lastmodDate = time.localtime(stats[8])
expDate = time.strptime(xDate, '%Y-%m-%d')
print image, time.strftime("%m/%d/%y", lastmodDate)
# check if image-last-modified-date is outdated
if expDate > lastmodDate:
try:
print 'Removing', image, time.strftime("(older than %m/%d/%y)", expDate)
os.remove(image) # commented out for testing
except OSError:
print 'Could not remove', image
OriginalL'auteur MasterSieben | 2011-11-19
Vous devez vous connecter pour publier un commentaire.
Rapide mais efficace consiste à utiliser
sys.argv
.Un plus robuste, extensible est d'utiliser le argparse module:
Puis à l'accès fourni par l'utilisateur de la valeur que vous souhaitez utiliser
args.xDate
au lieu dexDate
.À l'aide de la
argparse
module, vous obtenez automatiquement un message d'aide est gratuit pour un utilisateur tapeIl donne également un message d'erreur utile si l'utilisateur ne parvient pas à fournir le nom d'entrées.
Vous pouvez aisément configurer une valeur par défaut pour
xDate
, convertirxDate
dans undatetime.date
objet, et, comme ils disent à la TÉLÉ, "beaucoup, beaucoup plus!".Je vois plus loin dans le script que vous utilisez
pour convertir le
xDate
chaîne dans un tuple. Vous pouvez le faire avecargparse
doncargs.xDate
est automatiquement un temps de tuple. Par exemple,lorsqu'il est exécuté comme ceci:
rendements
PS. Quelle que soit la méthode que vous choisissez (sys.argv ou argparse), ce serait une bonne idée de tirer
à l'extérieur de la
for-loop
. Puisque la valeur dexDate
ne change jamais, vous avez seulement besoin de calculerexpDate
une fois.OriginalL'auteur unutbu
Peu plus de polonais à unutbu réponse:
OriginalL'auteur Wonil
Les options de ligne de commande peut être consulté via la liste
sys.argv
. De sorte que vous pouvez simplement utiliser(
sys.argv[0]
est le nom du script courant.)OriginalL'auteur Sven Marnach
vous pouvez utiliser runtime arguments en faveur de cette approche. Veuillez voir le lien suivant: http://www.faqs.org/docs/diveintopython/kgp_commandline.html
OriginalL'auteur Grrbrr404