Je veux écrire un programme pour cela: Dans un dossier, j'ai n nombre de fichiers; lire d'abord un fichier et effectuer une opération puis stocker le résultat dans un fichier séparé. Lisez ensuite le 2e fichier, recommencez l'opération et sauvegardez le résultat dans le nouveau 2e fichier. Suivez la même procédure pour n nombre de fichiers. Le programme lit tous les fichiers un par un et stocke les résultats de chaque fichier séparément. S'il vous plaît donnez des exemples de comment je peux le faire.Comment lire et écrire plusieurs fichiers?
Répondre
import sys
# argv is your commandline arguments, argv[0] is your program name, so skip it
for n in sys.argv[1:]:
print(n) #print out the filename we are currently processing
input = open(n, "r")
output = open(n + ".out", "w")
# do some processing
input.close()
output.close()
appeler Ensuite, comme:
./foo.py bar.txt baz.txt
print (n) pour le rendre compatible avec python 3. Fonctionne toujours avec 2.4 au moins, aussi bien. – Bernard
Je cours de la mémoire 2.3, mais merci pour les heads-up. –
il peut être exagéré pour un seul argument, mais je recommanderais le module d'optparse pour l'analyse de ligne de commande. Prend en charge des tâches horribles comme la gestion des devis, etc. – monkut
Vous pouvez trouver le module fileinput
utile. Il est conçu pour exactement ce problème.
Je pense que ce qui vous manque, c'est comment récupérer tous les fichiers dans ce répertoire. Pour ce faire, utilisez le module glob. Voici un exemple qui dupliquer tous les fichiers avec l'extension * .txt aux fichiers avec l'extension * .out
import glob
list_of_files = glob.glob('./*.txt') # create the list of file
for file_name in list_of_files:
FI = open(file_name, 'r')
FO = open(file_name.replace('txt', 'out'), 'w')
for line in FI:
FO.write(line)
FI.close()
FO.close()
Un petit problème avec cet exemple. Que se passe-t-il si j'ai un fichier appelé 'mytxtfile.txt'? –
réponse répertoire ou d'une liste spécifique incorporant des arguments de noms de fichiers combinés:
import sys
import os.path
import glob
def processFile(filename):
fileHandle = open(filename, "r")
for line in fileHandle:
# do some processing
pass
fileHandle.close()
def outputResults(filename):
output_filemask = "out"
fileHandle = open("%s.%s" % (filename, output_filemask), "w")
# do some processing
fileHandle.write('processed\n')
fileHandle.close()
def processFiles(args):
input_filemask = "log"
directory = args[1]
if os.path.isdir(directory):
print "processing a directory"
list_of_files = glob.glob('%s/*.%s' % (directory, input_filemask))
else:
print "processing a list of files"
list_of_files = sys.argv[1:]
for file_name in list_of_files:
print file_name
processFile(file_name)
outputResults(file_name)
if __name__ == '__main__':
if (len(sys.argv) > 1):
processFiles(sys.argv)
else:
print 'usage message'
Je Je viens d'apprendre la commande os.walk() récemment, et cela peut vous aider ici. Il vous permet de parcourir une arborescence de répertoires.
import os
OUTPUT_DIR = 'C:\\RESULTS'
for path, dirs, files in os.walk('.'):
for file in files:
read_f = open(os.join(path,file),'r')
write_f = open(os.path.join(OUTPUT_DIR,file))
# Do stuff
from pylab import *
import csv
import os
import glob
import re
x=[]
y=[]
f=open("one.txt",'w')
for infile in glob.glob(('*.csv')):
# print "" +infile
csv23=csv2rec(""+infile,'rb',delimiter=',')
for line in csv23:
x.append(line[1])
# print len(x)
for i in range(3000,8000):
y.append(x[i])
print ""+infile,"\t",mean(y)
print >>f,""+infile,"\t\t",mean(y)
del y[:len(y)]
del x[:len(x)]
- 1. Comment lire et écrire des fichiers CSV en utilisant WPF?
- 2. Comment lire plusieurs fichiers pcap> 2GB?
- 3. Comment utiliser System.IO.Compression pour lire/écrire des fichiers ZIP?
- 4. Lire plusieurs fichiers texte dans un dossier
- 5. Comment lire et écrire le code machine .exe manuellement?
- 6. Comment lire et écrire directement des fichiers de base de données dans vb2008?
- 7. Comment puis-je lire plusieurs fichiers dans un script AGI?
- 8. VB - Comment lire et écrire un fichier binaire?
- 9. Comment lire et écrire à partir du port série
- 10. Comment lire un fichier et écrire dans un fichier texte?
- 11. Bibliothèque pour lire/écrire des fichiers pbxproj/xcodeproj?
- 12. Comment lire plusieurs fichiers texte et les enregistrer dans un seul fichier texte?
- 13. Comment ouvrir et diviser plusieurs fichiers
- 14. stocker et lire des fichiers xml iPhone
- 15. Powershell: comment lire et écrire des E/S dans un pipeline?
- 16. Comment puis-je lire/écrire depuis/vers des fichiers avec MSSQL 2000?
- 17. lire et écrire le fichier .xls dans arraylist
- 18. Lire et écrire une clé dans/depuis le registre
- 19. Lire et écrire dans le registre avec VB.NET
- 20. Comment lire et écrire Delphi 2010 RibbonApplicationMenuBar Articles récents dans un fichier
- 21. Comment lire plusieurs lignes en Perl?
- 22. Comment lire/écrire des entrées depuis/vers NSStreams
- 23. Fichiers batch: comment lire un fichier?
- 24. comment lire les fichiers .flv dans WPF?
- 25. Comment pouvez-vous lire les fichiers texte?
- 26. Lire des fichiers WordPerfect avec Python?
- 27. Comment lire/écrire en tant qu'utilisateur authentifié avec Apache/WebDAV?
- 28. Comment écrire/lire des bits de/vers un flux? (C#)
- 29. Comment remonter/répertoire sdcard à lire/écrire sur l'émulateur?
- 30. Comment fusionner plusieurs fichiers PDB?
devoirs ?? vérifier l'historique de l'affiche –
Probablement. Mais en même temps, j'apprends moi-même Python, ça me semble un bon exercice pour me rappeler que je ne me cogne pas la tête contre un mur. S'il ne se soucie pas assez d'apprendre ce niveau, alors qui suis-je pour discuter? À la fin de la journée, si vous échouez à un examen, vous avez toujours échoué. –
Je l'ai marqué comme devoirs; demander et répondre à des questions de devoirs sont dans la liste du site, mais pour le bénéfice du demandeur, je voudrais que nous leur demandions d'abord de fournir un code qui ne fonctionne pas jusqu'à présent. – tzot