J'essaie d'écrire un script avec Python. J'ai un fichier .txt contenant une colonne avec des nombres dans ce format (exemple) 198900.000. L'idée est de lire ces nombres un par un et de les utiliser un à un comme entrée pour une commande:

  1. Python lit le premier nombre;
  2. Python utilise le nombre comme entrée dans la commande;
  3. La commande écrit une sortie nommée, disons, 'numéro_sortie'. La commande doit s'exécuter de manière itérative jusqu'à la fin de la colonne (le nombre de lignes est inconnu).

Pouvez-vous m'aider s'il vous plaît? Je vous remercie!

-1
Valerio 14 mars 2019 à 13:24

2 réponses

Meilleure réponse

List.txt:

600.000
630.000
640.000
650.000
660.000
680.000
690.000
720.000
740.000
750.000
770.000
780.000
800.000
810.000
820.000
830.000
840.000
850.000
860.000
3310.000

Peut-être :

print(open("list.txt").read().split())

SORTIE :

['600.000', '630.000', '640.000', '650.000', '660.000', '680.000', '690.000', '720.000', '740.000', '750.000', '770.000', '780.000', '800.000', '810.000', '820.000', '830.000', '840.000', '850.000', '860.000', '3310.000']

OU

with open("list.txt","r") as f:
    lines = f.readlines()
    for x in lines:
        print("output_number: {}".format(x))

SORTIE :

output_number: 600.000

output_number: 630.000

output_number: 640.000

output_number: 650.000

output_number: 660.000
.
.
.

MODIFIER :

OP : Python doit lire le premier numéro et, pour le premier numéro, exécuter une commande. Par exemple : Python lit le premier numéro « 600,00 », puis fait (j'écris la commande pour que cela puisse être clair) « gmx trjconv -dump 600.00 -output dump_600.00 ». Ensuite, Python doit répéter la même chose pour tous les nombres présents dans la colonne

commands_list = { 'clear': ' gmx trjconv -dump XxX -output dump_XxX '}

def callCommand(x):
    cmd = input("Enter command:")
    if cmd in commands_list:
        print(commands_list[cmd].replace("XxX", x))
    else:
        print("Command does not exit, quiting")
        exit()



with open("list.txt","r") as f:
    lines=f.readlines()
    for x in lines:
        callCommand(x)
        print("output_number: {}".format(x))

SORTIE :

Enter command:clear
 gmx trjconv -dump 600.000
 -output dump_600.000

output_number: 600.000

Enter command:blahhh
Command does not exit, quiting
1
DirtyBit 14 mars 2019 à 10:48

En supposant que vous n'avez qu'une seule colonne avec le numéro.

Si vous avez plusieurs colonnes, vous pouvez utiliser l'attribut fieldnames pour localiser votre colonne.

import csv

output_number=list()
with open('yourfiledirectory\yourfile.txt', 'r') as f:
    df=csv.reader(f)
    for row in df:
       output_number.append(row)  
0
Gio 14 mars 2019 à 10:36