2017-01-20 3 views
0

Disons que j'ai n fichiers dans un répertoire avec les noms de fichiers: file_1.txt, file_2.txt, file_3.txt .....file_n.txt. Je voudrais les importer en Python individuellement, puis faire des calculs sur eux, puis stocker les résultats dans n fichiers de sortie correspondants: file_1_o.txt, file_2_o.txt, ....file_n_o.txt.Exportation de plusieurs fichiers avec des noms de fichiers différents

J'ai compris comment importer plusieurs fichiers:

import glob 
import numpy as np 

path = r'home\...\CurrentDirectory' 
allFiles = glob.glob(path + '/*.txt') 
for file in allFiles: 
    # do something to file 
    ... 
    ... 
    np.savetxt(file,) ??? 

Vous ne savez pas exactement comment ajouter le _o.txt (ou n'importe quelle chaîne d'ailleurs) après le nom de fichier pour que le fichier de sortie soit file_1_o.txt

Répondre

2

Pouvez-vous utiliser l'extrait suivant pour générer le nom de fichier de sortie? Où j'ai supposé que in_filename est de la forme "file_1.txt".
Bien sûr, il vaudrait probablement mieux mettre "_o." (le suffixe devant l'extension) dans une variable afin que vous puissiez changer à volonté juste au même endroit et avoir la possibilité de changer ce suffixe plus facilement. Dans votre cas, cela signifie

import glob 
import numpy as np 

path = r'home\...\CurrentDirectory' 
allFiles = glob.glob(path + '/*.txt') 
for file in allFiles: 
    # do something to file 
    ... 
    parts = file.split(".") 
    out_filename = parts[0] + "_o." + parts[1] 
    np.savetxt(out_filename,) ??? 

mais vous devez être prudent, car peut-être avant de passer out_filename-np.savetxt vous devez construire le chemin complet de sorte que vous pourriez avoir besoin d'avoir quelque chose comme
np.savetxt(os.path.join(path, out_filename),)
ou quelque chose le long de ces lignes.
Si vous souhaitez combiner le changement de fond d'une ligne et définir votre « suffixe dans une variable » comme je l'ai mentionné avant que vous pourriez avoir quelque chose comme

hh = "_o." # variable suffix 
.......... 
# inside your loop now 
for file in allFiles: 
    out_filename = hh.join(file.split(".")) 

qui utilise une autre façon de faire la même chose en utilisant rejoindre sur la liste fractionnée, comme mentionné par @NathanAck dans sa réponse.

0
import os 

#put the path to the files here 
filePath = "C:/stack/codes/" 
theFiles = os.listdir(filePath) 

for file in theFiles: 
    #add path name before the file 
    file = filePath + str(file) 

    fileToRead = open(file, 'r') 
    fileData = fileToRead.read() 

    #DO WORK ON SPECIFIC FILE HERE 
    #access the file through the fileData variable 
    fileData = fileData + "\nAdd text or do some other operations" 

    #change the file name to add _o 
    fileVar = file.split(".") 
    newFileName = "_o.".join(fileVar) 

    #write the file with _o added from the modified data in fileVar 
    fileToWrite = open(newFileName, 'w') 
    fileToWrite.write(fileData) 

    #close open files 
    fileToWrite.close() 
    fileToRead.close()