1

だから私がやろうとしていることは次のとおりです。1)forループを使用してディレクトリ内にフォルダーを作成し、2)出力ファイルをこのフォルダーに書き込みます

input2 名とフォルダー名の一部として for ループの値を使用しようとしています

import os,re
values = ['alpha','123']

query_file = '/Users/name/Desktop/query.txt' # 'a\nb\nc\nd\n4\n5\n6\n'
reading_file = '/Users/name/Desktop/alpha.txt' #'abcdefghijklmnopqrstuvwxyz'
#reading_file = '/Users/name/Desktop/123.txt' #'123456789'

output_file='/Users/name/Desktop/output.txt'

def func(input1,input2,output):
    query=open(input1,'r').read().split('\n')
    reading = open(input2,'r').read()


    dir,file=os.path.split(input1)                
    temp_out= os.path.join(dir,output)            
    out_file=open(temp_out,'w') 

    for line in query:
        m = re.search(line,reading)
        if bool(m) == True:
            out_file.write( str( m.start() ) +'\n')


print func(query_file,reading_file,output_file)

そのため、入力と同じディレクトリにあるoutput.txtというファイルを作成しますが、(名前に基づいてフォルダーを作成し)ファイルを(フォルダー内に)配置したい

今、私はこれを一度に1つずつ実行し、ファイルを配置するためにフォルダーを個別に作成する必要があります. . . 「values」リストを「reading_file」の末尾として使用したいと思います (最初のものは「alpha」で終わり、その後に .txt 拡張子が続き、2 番目のものは「123」に続き、その後に .txt が続きます)

最終的に、次の 2 つのフォルダーが作成されます。

'/Users/name/Desktop/alpha/output.txt'

'/Users/name/Desktop/123/output.txt'

*入力はforループで呼び出されているものに関連して変化する必要があるため、出力は異なる必要があることに注意してください

これが紛らわしい場合は申し訳ありませんが、スクリプトが行っていることからできるだけ単純化しようとしています。何か明確にする必要がある場合はお知らせください

4

2 に答える 2

2

values私があなたの質問を正しく理解していれば、特定のフォルダー (ファイル) で見つかった場所 (何か)を反復処理して出力したいだけです。コードを少し変更する

import os, re
values = ['alpha','123']

BASE_PATH = '/Users/name/Desktop/'
OUTPUT_FILE_NAME = 'output.txt'

query_file = os.path.join(BASE_PATH, 'query.txt') # 'a\nb\nc\nd\n4\n5\n6\n'

def func(query_file, reading_files):
    with open(query_file,'r') as f:
        query = f.read().split('\n')

    # TODO: check query

    for fbase in reading_files:
        in_file_name = os.path.join(BASE_PATH, '{}.txt'.format(fbase))
        out_dir = os.path.join(BASE_PATH, fbase)
        out_file_name = os.path.join(out_dir, OUTPUT_FILE_NAME)

        # TODO: check if out_dir exists but is regular file
        if not os.path.isdir(out_dir):
            os.mkdir(out_dir)

        with open(in_file_name, 'r') as in_file, open(out_file_name, 'w') as out_file:
            reading = in_file.read()

            for line in query:
                m = re.search(line, reading)
                if m is not None:
                    out_file.write("{}\n".format(str(m.start())))


print(func(query_file, values))

基本的に、ファイルを操作する方が簡単withです;)

于 2013-07-26T20:18:40.253 に答える