J'aimerais créer un tampon de chaîne de caractères pour effectuer de nombreux traitements, formater et enfin écrire le tampon dans un fichier texte en utilisant une méthode de style C. sprintf
en Python. À cause des instructions conditionnelles, je ne peux pas les écrire directement dans le fichier.
par exemple, un pseudo-code :
sprintf(buf,"A = %d\n , B= %s\n",A,B)
/* some processing */
sprint(buf,"C=%d\n",c)
....
...
fprintf(file,buf)
Ainsi, dans le fichier de sortie, nous avons ce genre d'o/p :
A= foo B= bar
C= ded
etc...
Edit, pour clarifier ma question :buf
est un grand tampon contenant toutes ces chaînes de caractères qui ont été formatées en utilisant sprintf. D'après vos exemples, buf
ne contiendra que les valeurs actuelles, pas les anciennes. Par exemple, la première dans buf
J'ai écrit A= something ,B= something
plus tard C= something
a été ajouté dans le même buf
mais dans vos réponses Python buf
contient seulement la dernière valeur, ce qui n'est pas ce que je veux - je veux buf
pour avoir tous les printf
comme je l'ai fait depuis le début, comme en C
.
1 votes
Ce n'est pas comme ça que sprintf() fonctionne en C. (Il écrit le contenu au début de la ligne
buf
pas à la fin). Le mieux serait probablement d'utiliser un tableau de chaînes de caractères, puis de les réunir avant d'écrire dans le fichier.0 votes
@dividebyzero N'est-ce pas trivial en Python qui est un langage de programmation général ? Par exemple, voir La solution de Michael J. Barber (posté après votre commentaire).
def sprintf(buf, fmt, *args): ...
0 votes
@jdk1.0 Je ne sais pas ce que je voulais dire, j'étais un jeune et naïf programmeur Python... Cette question est en fait bizarre parce que cette histoire de réutilisation de tampon n'est pas si simple, il faudrait incrémenter un pointeur avec la sortie de chaque appel sprintf, et ce genre de chose n'est pas quelque chose dont vous devriez vous soucier si vous faites du Python. Bref, je suis content d'être passé à Scala et maintenant à Julia !