TypeError: le fait de contraindre à Unicode: besoin de chaîne ou de tampon, liste des
Je suis en essayant d'obtenir les données d'analyse des script et en cours d'exécution. Il fonctionne aussi loin que la manipulation de données est concerné. Ce que j'essaie de faire est de le configurer afin que je puisse entrer plusieurs défini par l'utilisateur CSV avec une seule commande.
par exemple
> python script.py One.csv Two.csv Three.csv
Si vous avez des conseils sur la façon d'automatiser la dénomination de la sortie CSV, de sorte que si input = test.csv
, output = test1.csv
, j'apprécierais que ainsi.
Arriver
TypeError: coercing to Unicode: need string or buffer, list found
pour la ligne
for line in csv.reader(open(args.infile)):
Mon code:
import csv
import pprint
pp = pprint.PrettyPrinter(indent=4)
res = []
import argparse
parser = argparse.ArgumentParser()
#parser.add_argument("infile", nargs="*", type=str)
#args = parser.parse_args()
parser.add_argument ("infile", metavar="CSV", nargs="+", type=str, help="data file")
args = parser.parse_args()
with open("out.csv","wb") as f:
output = csv.writer(f)
for line in csv.reader(open(args.infile)):
for item in line[2:]:
#to skip empty cells
if not item.strip():
continue
item = item.split(":")
item[1] = item[1].rstrip("%")
print([line[1]+item[0],item[1]])
res.append([line[1]+item[0],item[1]])
output.writerow([line[1]+item[0],item[1].rstrip("%")])
Je ne comprends pas vraiment ce qui se passe avec l'erreur. Quelqu'un peut-il expliquer cela en termes simples?
Garder à l'esprit, je suis nouveau en programmation/python dans son ensemble et je suis fondamentalement d'apprentissage seul, donc si possible pourriez-vous expliquer ce qui ne va pas/comment résoudre ce problème afin que je puisse note pour référence future.
- Merci! encore du nouveau :/
Vous devez vous connecter pour publier un commentaire.
args.infile
est un liste de noms de fichiers, et non pas un nom de fichier. Boucle sur elle:Ici, j'ai utilisé
os.path.splitext()
de diviser l'extension et le nom de fichier de base de sorte que vous pouvez générer un nouveau nom de fichier de sortie ajouter1
à la base.Si vous spécifiez un
nargs
argument.add_argument
, l'argument est toujours renvoyée sous forme de liste.En supposant que vous voulez traiter avec tous les fichiers spécifiés, de la boucle au moyen de cette liste:
Ou si vraiment vous voulez juste être en mesure de spécifier un fichier unique; il suffit de se débarrasser de
nargs="+"
.