1

1 つのフォルダー内のすべてのファイルに対して関数を実行し、それらから新しいファイルを作成したいと考えています。1 つのファイルのコードを以下に示します。親切に助けていただければ幸いです。

def newfield2(infile,outfile):
    output = ["%s\t%s" %(item.strip(),2) for item in infile]
    outfile.write("\n".join(output))
    outfile.close()
    return outfile


infile = open("E:/SAGA/data/2006last/325125401.all","r")
outfile = open("E:/SAGA/data/2006last/325125401_edit.all","r")

「E:/SAGA/data/2006last/」フォルダ内のすべてのファイルを変更し、編集拡張子を持つ新しいファイルを作成したいと考えています。

4

2 に答える 2

4

os.listdir()ディレクトリ内のすべてのファイルを一覧表示するために使用します。この関数は、フル パスではなく、ファイル名のみを返します。このos.pathモジュールは、必要に応じてファイル名を作成するためのツールを提供します:

import os

folder = 'E:/SAGA/data/2006last'

for filename in os.listdir(folder):
    infilename = os.path.join(folder, filename)
    if not os.path.isfile(infilename): continue

    base, extension = os.path.splitext(filename)
    infile = open(infilename, 'r')
    outfile = open(os.path.join(folder, '{}_edit.{}'.format(base, extension)), 'w')
    newfield2(infile, outfile)
于 2013-04-16T10:26:57.910 に答える
0
import os

def apply_to_all_files:
    for sub_path in os.listdir(path):
        next_path = os.path.join(path, sub_path)
        if os.path.isfile(next_path):
            infile = open(next_path,"r")
            outfile = open(next_path + '.out', "w")
            newfield2(infile, outfile)
于 2013-04-16T10:26:35.817 に答える