J'ai suivi un cours pour apprendre le python; Dans mon cours, je dois faire un projet avec les conditions suivantes:
Maintenant, ma question est de savoir comment faire référence aux fichiers avec la structure suivante:
import csv def function(input_file): with open ('filename.csv') as input_file: reader = csv.reader(input_file_name) for row in reader: print(row)
Ci-dessous, veuillez trouver un exemple et un code simple:
def function (input_file_name, output_file_name):
mais il n'y a pas de sortie dans mon terminal!
Quelle est mon erreur?
3 Réponses :
Vous pouvez utiliser la fonction open()
intégrée pour cela, comme open(input_file)
puis lire toutes les lignes sous forme de liste avec .readlines()
, lire chaque ligne avec .readline()
avec boucle while et le tout sous forme de chaîne avec .read()
Je peux écrire un code sans les restrictions que j'ai mentionnées ci-dessus et il a une sortie correcte; Cependant, je ne sais pas comment écrire un code pour ouvrir un fichier, où le fichier est une entrée de la fonction
La lecture à partir d'un fichier CSV se fait à l'aide de l'objet lecteur. Le fichier CSV est ouvert sous forme de fichier texte avec la fonction open () intégrée de Python, qui renvoie un objet fichier. Ceci est ensuite transmis au lecteur, qui fait le gros du travail.
import csv with open('employee_file.csv', mode='w') as employee_file: employee_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) employee_writer.writerow(['John Smith', 'Accounting', 'November']) employee_writer.writerow(['Erica Meyers', 'IT', 'March'])
Vous pouvez également écrire dans un fichier CSV à l'aide d'un objet écrivain et de la méthode .write_row ():
import csv with open('employee_birthday.txt') as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') line_count = 0 for row in csv_reader: if line_count == 0: print(f'Column names are {", ".join(row)}') line_count += 1 else: print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.') line_count += 1 print(f'Processed {line_count} lines.')
Merci pour votre réponse, mais je ne peux pas ajouter de code en dehors des fonctions, le plus difficile est que. Je ne sais pas comment définir une fonction dont le fichier respectif est son entrée
Votre approche pourrait être quelque chose comme ceci:
somefunction("in.csv", "out.csv")
Ajoutez le traitement de votre choix dans la boucle for
. La fonction doit être appelée avec str
ou Path
comme des objets nommant les fichiers d'entrée et de sortie. Par exemple
import csv def somefunction(in_filepath, out_filepath): with open(in_filepath) as infile: with open(out_filepath, 'w') as outfile: reader = csv.reader(infile) writer = csv.writer(outfile) for row in reader: print('Do something with row') writer.writerow(row)
Est-ce que cela répond à votre question? Comment ouvrir un fichier via python
C'est très similaire, mais les solutions n'ont pas fonctionné pour moi :(