-3
votes

Comment résonner une variable dans un fichier à l'aide de Python

J'écris un script pour aller avec mon réseau de maison intelligent fait maison et je suis tombé sur un problème de stockage de variables dans un fichier. Voici une version abrégée du code

log.write('Timestamp: ' + timestamp())
can only concatenate str (not "NoneType") to str


5 commentaires

Vous devez retourner une valeur de votre fonction. retour Errorime


@Seeaverolson: Je ne vois pas comment cette question est liée à Bash.


TYPO: Prit devrait être Imprimer


@Barmar Prit est exprès pour déclencher une erreur de syntaxe


Prit ne déclenche pas un syntaxError , il déclenche un nomError . Aucune de vos fonctions retourner n'importe quoi. La logique de errorormageage a peu de sens, comparant différents produits deté les uns contre les autres. S'il vous plaît Modifier Votre question de détailler ce que vous essayez de faire. De préférence, retirez le code sans rapport avec le code brisé et créez un exemple de reproductible minimal juste pour la tâche d'écriture.


3 Réponses :


0
votes

horodaimstamp () code> ne doit pas faire sa propre impression, il devrait simplement renvoyer la chaîne.

Vous devez également utiliser denttime.strftime () code>, pas Formation de chaîne ordinaire. P>

def timestamp():
    return datetime.datetime.now().strftime('Timestamp: {:%Y-%m-%d %H:%M:%S}')


2 commentaires

Ceci corrigé le typeError mais maintenant que la ligne renvoie une exception non supportéeOpéderRorRor est survenue: non-prise en charge non inscrite


Vous devez utiliser StrfTime () pour formater l'heure.



1
votes
import datetime
import os

log = open('log.txt', 'w')


def timestamp():
    errortime = (
        'Timestamp: {:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now()))
    print(errortime)
    errortime = str(errortime)
    return errortime


def errormessage(e):
    errortype = ''
    if isinstance(e, OSError):
        errortype = ('OSError')
    elif isinstance(e, SyntaxError):
        errortype = ('SyntaxError')
    elif isinstance(e, AssertionError):
        errortype = ('AssertionError')
    elif isinstance(e, NameError):
        errortype = 'NameError'

    return errortype


def consolelog(e):
    log.write('Timestamp: ' + timestamp())
    log.write('Error Type: ' + errormessage(e))
    log.write('------------------')


try:
    prit('hello')
except Exception as e:
    consolelog(e)
    print('done')

1 commentaires

Cela a fonctionné parfaitement, merci.



-1
votes

Tout d'abord lors de l'ouverture d'un fichier, vous devez déterminer le mode que vous utilisez avec le fichier: xxx

ici "W 'est utilisé pour indiquer que nous voulons effacer le fichier s'il veut Il existe déjà ou créez-le si cela ne l'écrit pas, puis écrivez-le depuis le début. Sinon, si nous voulons conserver le fichier actuel et ajouter de nouvelles données à la fin, nous devons utiliser le mode 'A' (ANNEX).

Une autre chose importante à remarquer est que vous devez fermer le fichier après votre Terminez en apportant des modifications afin que vos modifications soient enregistrées; Ainsi, après le log.write () Vous devez ajouter log.close () .

L'erreur que vous obtenez est due à la fonction TIESTAMP ne rien retourner (en fait, il renvoie null). Lorsque vous utilisez 'Timestamp:' + horodatage () Ce que vous voulez est horodatage () renvoie l'horodatage actuel. Mais l'impression de l'errorime dans la fonction horodatage ne fait pas l'affaire; Vous devez renvoyer la variable Errortime de la fonction en ajoutant retour Errorime au bas de la fonction.


0 commentaires