J'ai un script Python jusqu'ici qui fait ce que je ... Ouvre le CSV Défini par l'utilisateur, divise le fichier en différents "pools" prédéfinis et les refait en leurs propres fichiers, avec des en-têtes appropriés. Mon seul problème est que je veux changer la liste de Pool d'une statique à une variable; et avoir quelques problèmes.Création d'une liste à partir d'un fichier CSV en utilisant Python
La liste de pool se trouve dans le CSV lui-même, dans la colonne 2. et peut être dupliquée. À l'heure actuelle, avec cette configuration, le système peut créer des fichiers «morts» sans données en dehors de l'en-tête.
Quelques notes: Oui, je sais l'orthographe est pas parfait et oui je sais ce que certains de mes commentaires sont un peu hors
import csv
#used to read ane make CSV's
import time
#used to timestamp files
import tkFileDialog
#used to allow user input
filename = tkFileDialog.askopenfilename(defaultextension = ".csv")
#Only user imput to locate the file it self
csvfile = []
#Declairs csvfile as a empty list
pools = ["1","2","4","6","9","A","B","D","E","F","I","K","L","M","N","O","P","W","Y"]
#declairs hte pools list for known pools
for i in pools:
#uses the Pools List and makes a large number of variables
exec("pool"+i+"=[]")
reader = csv.reader(open(filename, "rb"), delimiter = ',')
#Opens the CSV for the reader to use
for row in reader:
csvfile.append(row)
#dumps the CSV into a varilable
headers=[]
#declairs headers as empty list
headers.append(csvfile[0])
#appends the first row to the header variable
for row in csvfile:
pool = str(row[1]).capitalize()
#Checks to make sure all pools in the main data are capitalized
if pool in pools:
exec("pool"+pool+".append(row)")
#finds the pool list and appends the new item into the variable list
else:
pass
for i in pools:
exec("wp=csv.writer(open('pool "+i+" "+time.strftime("%Y%m%d")+".csv','wb'),)")
wp.writerows(headers)
#Adds the header row
exec("wp.writerows(pool"+i+")")
#Created the CSV with a timestamp useing the pool list
#-----Needs Headers writen in on each file -----
EDIT: Comme il y a eu quelques questions
Raison de le code: J'ai des rapports quotidiens qui sont générés, Une partie de ces rapports qui nécessitent un processus manuel est la division de ces rapports en différents rapports de pool. Je créais ce script afin que je puisse rapidement sélectionner le fichier et les partager rapidement dans leurs propres fichiers.
Le fichier CSV principal peut contenir de 50 à 100 éléments, il contient 25 colonnes au total et le pool est toujours répertorié dans la deuxième colonne. Tous les pools ne seront pas listés tout le temps, et les pools apparaîtront plus d'une fois.
J'ai déjà essayé plusieurs boucles différentes; une est la suivante
pools = [] pour la ligne dans le fichier (ouverte (nom de fichier, 'rb')): line = line.split() x = ligne [1] pools.append (x)
Mais j'obtiens une erreur de liste avec ceci.
Un exemple du CSV:
Ticket Pool Date Column 4 Column 5
1 A 11/8/2010 etc etc
2 A 11/8/2010 etc etc
3 1 11/8/2010 etc etc
4 6 11/8/2010 etc etc
5 B 11/8/2010 etc etc
6 A 11/8/2010 etc etc
7 1 11/8/2010 etc etc
8 2 11/8/2010 etc etc
9 2 11/8/2010 etc etc
10 1 11/8/2010 etc etc
quel cauchemar – SilentGhost
je suggère que vous publiez votre intention. Cela semble très compliqué et il se peut que votre intention puisse être atteinte par des moyens simples. Je suis d'accord avec SilentGhost à ce sujet. – pyfunc
dStulle était capable de me montrer ce que je devais faire. Je vous remercie! – Talauna