-3
votes

Comment utiliser un fichier comme entrée / sortie d'une fonction en python?

J'ai suivi un cours pour apprendre le python; Dans mon cours, je dois faire un projet avec les conditions suivantes:

  • Je dois utiliser un modèle préparé par l'enseignant.
  • Tous les codes doivent être écrits en fonction
  • Il doit ouvrir un fichier CSV et avoir un fichier (txt / csv) comme sortie.

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?


2 commentaires

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 :(


3 Réponses :


0
votes

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()


1 commentaires

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



0
votes

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.')


1 commentaires

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



0
votes

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)


0 commentaires