0
votes

Comment exécuter le programme Python et enregistrer la sortie dans différents noms de fichiers automatiquement

J'ai un programme Python qui traite des images et enregistre la sortie résultante dans un fichier. Je reçois les noms de fichier d'entrée et de sortie via la console à l'aide de l'entrée (). Mais je veux enregistrer la sortie automatiquement avec le nom de fichier comme quelque chose comme "INPUT_FILE_NAME_OUT". Remarque la chaîne "_out" connectée au nom du fichier d'entrée

Cela m'aidera à obtenir une entrée utilisateur uniquement pour les noms de fichiers d'entrée, économisant ainsi peu de temps pour l'utilisateur, car il n'a pas besoin de penser à chaque fois le nom de fichier de sortie P>

Snippet de code d'échantillon strong> p> xxx pré>

Code attendu Snippet fort> p>

if __name__ == "__main__":

    in_file = input()
    # out_file = input() ------Not getting the file name from user thereby supplying only one argument to the below function

        processed = process_image(in_file)

# And within the function
def process_image(img):
    .
    .
    .
    out_file = img+"_out.jpg" ##### What should come here to achieve my requirement ########
    cv2.imwrite(out_file,processed_image)


0 commentaires

3 Réponses :


-1
votes

Eh bien c'est simple! Prenez juste la chaîne "in_file" que vous avez demandée et concatez "_out" à la fin et transmettez-la comme le fichier OUT_FILE.

Si vous ne traitez que ".jpg" xxx

si sa variable: xxx


3 commentaires

Mais le problème ici est l'in_file se termine par une extension comme entrée_file.jpg. Donc, mon nom de fichier de sortie doit être INPUT_FILE_OTE.JPG. Donc, j'ai besoin d'abord de diviser le nom du fichier d'entrée, puis de la concurrence et de l'extension.


Droite. Désolé ... Mise à jour de la réponse. Vous pouvez épisser les 4 derniers caractères de l'entrée et les concainer, que ce soit manuellement ou automatiquement.


Le code papier l'index -4 est assez trop féliable; Et si l'extension de fichier comporte 4 caractères, par exemple 'jpeg'?



1
votes

Tout ce que vous avez à faire est,

  • Prenez le INPUT_IMG.JPG que vous obtenez de l'entrée utilisateur
  • Split the INPUT_IMG.JPG avec Délimiteur . et cela vous donnera cette liste: ['INPUT_IMG', 'JPG']
  • Ramassez le premier élément et ajoutez _out.jpg suffixe xxx

4 commentaires

Merci pour votre réponse rapide. CA aide


L'OP a demandé spécifiquement pour .jpg cas. Plusieurs choses peuvent être faites si l'extension est différente. Une façon peut être du code papier .jpg , .png etc. Une autre façon peut demander à l'utilisateur de l'extension et de l'appliquer. De nombreuses choses peuvent être faites.


Ce que j'essaie de souligner, c'est que le codage «.jpg» rend le code moins ou très spécifique. Puisque vous avez déjà le résultat de .split ('.') , pourquoi ne pas au moins ajouter l'extension d'origine?


Oh pardon! Ouais c'est une meilleure approche. Ma faute! Je n'ai pas reçu cela de votre commentaire précédent.



2
votes

Vous pouvez utiliser la classe code> de la classe code> à partir du module code> pathlib code>: xxx pré>

exemple: p>

in_file = Path('D:/folder/test.jpg')
insert = '_out'
out_file = in_file.parent / (in_file.stem + insert + in_file.suffix)

print(out_file)
D:\folder\test_out.jpg


3 commentaires

Alors que la réponse de @ Redowan est la plus simple que je dois reconnaître qu'il s'agit de la réponse techniquement correcte


@JKC: Comme dans la plupart des cas, des solutions plus généralement applicables viennent avec un peu de frais généraux ;-) Si vous n'êtes pas familier avec pathlib , assurez-vous de vérifier. Pour des cas spécifiques ou des hacks rapides, une approche comme Redowan suggérée est également bien, je suppose.


Ouais, cette approche générale mieux !!