3

Python の初心者で、初めてのポスターです。ご安心ください。.mod現在のフォルダー内の特定の拡張子 (例では ) のすべてのファイルにテキスト行を挿入したいと考えています。より簡単な場合は、特定のフォルダーを指すことができます。

以下は私がコピーして変更したものです。特定のファイルに必要なことを正確に実行しています。sit を SIT に置き換える部分は完全に不要ですが、削除するとプログラムは動作しません。それがなぜなのかはわかりませんが、私はそれと一緒に暮らすことができます。

import sys, fileinput

for i, line in enumerate(fileinput.input('filename.mod', inplace=1)):  
    sys.stdout.write(line.replace('sit', 'SIT'))    
    if i == 30: sys.stdout.write('TextToInsertIntoLine32' '\n') #adds new line and text to line 32  

私の質問は、ディレクトリ内のすべてのファイルに対してこれを実行するにはどうすればよいですか? ファイル名を置き換えてsys.argv[1]、コマンドラインからスクリプトを呼び出してみましたが、'*.mod'うまくいきませんでした。どんな助けでも大歓迎です。

4

4 に答える 4

2

次のようにできます。

import os
folder = '...'   # your directory
files = [f for f in os.listdir(folder) if f.endswith('.mod')]

次に、拡張子が「.mod」のファイルのリストを取得できます。すべてのファイルに対して関数を実行できます。

于 2013-09-11T02:10:01.013 に答える
1

glob.globを使用して、現在の作業ディレクトリ内のファイル名が で終わるすべてのファイルを一覧表示でき.modます。

import fileinput
import glob
import sys

for line in fileinput.input(glob.glob('*.mod'), inplace=True):
    sys.stdout.write(line.replace('sit', 'SIT'))
    if fileinput.filelineno() == 32:
        #adds new line and text to line 32      
        sys.stdout.write('TextToInsertIntoLine32' '\n')
于 2013-09-11T02:09:25.233 に答える