2017-07-20 12 views
0

私はPythonを使用してテキストファイル内に保存したファイルを読み取る方法はありますか?単一のテキストファイルから保存されたファイルを見つける

たとえば、filenames.txtというファイルがあります。

/home/ikhwan/acespc.c 
/home/ikhwan/trloc.cpp 
/home/ikhwan/Makefile.sh 
/home/ikhwan/Readme.txt 

だから、理論的には私が何をしたいのか、私は、ファイルのいくつかのヘッダーを変更するには、Pythonスクリプトを持っている:ファイルの内容は、以下のような他のファイルの名前を持つ必要があります。したがって、選択されたファイルのみを変更するスクリプトを実行したい場合は、filenames.txtが私のためのプラットフォームとして機能します。理由は、私はディレクトリとサブディレクトリの中にたくさんのファイルがあり、私はfilenames.txtの中に入れたファイルだけを読み込み、そのファイルを変更するだけです。 - >スクリプトの開始

実行スクリプトを:私は他のファイルでスクリプトを実行したい場合は将来的に、私は次のようにスクリプトの流れがなるfilenames.txt

にファイル名を追加または交換することができますfilenames.txt - > script内でファイル名を検索すると、ファイルのヘッダが追加または変更されます。

現在、私はos.walkを使用しましたが、すべてのディレクトリとサブディレクトリ内で検索します。ここに私の現在の機能があります。すでにfilenames.txtに記載されているファイルのパスを持っている場合

def read_file(file): 
    skip = 0 
    headStart = None 
    headEnd = None 
    yearsLine = None 
    haveLicense = False 
    extension = os.path.splitext(file)[1] 
    logging.debug("File extension is %s",extension) 
    type = ext2type.get(extension) 
    logging.debug("Type for this file is %s",type) 
    if not type: 
     return None 
    settings = typeSettings.get(type) 
    with open(file,'r') as f: 
     lines = f.readlines() 
+0

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 StackOverflowは、デザイン、コーディング、リサーチまたはチュートリアルサービスではありません。 – Prune

+0

あなたは私たちにあなた自身の明らかな試みがないプログラミング問題を手渡しました。ファイルを開いて読み込む方法はまだ学習されていないようです。これは、あなたがローカルの家庭教師やスタックオーバーフローではなく、チュートリアルを通して時間を取る必要があることを示唆しています。 – Prune

+0

現在、私は再帰関数を使って、ディレクトリとサブディレクトリからすべてのファイルを読み込みます。ここに私の現在のコードです。 – Ikhwan

答えて

0

あなたは行ずつそれを読み、その後、各ファイルパスを処理し、それを開いて、ファイルシステムをウォークスルーする必要はありませんから、それ、例えば

# this is your method that will be called with each file path from the filenames.txt 
def process_file(path): 
    # do whatever you want with `path` in terms of processing 
    # let's just print it to STDOUT as an example 
    with open(path, "r") as f: 
     print(f.read()) 

with open("filenames.txt", "r") as f: # open filenames.txt for reading 
    for line in f: # read filenames.txt line by line 
     process_file(line.rstrip()) # send the path stored on the line to process_file() 
+0

私は変更したり、ファイル内の別のパスを追加する場合、これはまだ適用されますか? – Ikhwan

+0

@Ikhwan - 上記のスクリプトを実行するたびに、それらのパスごとに 'process_file()'関数が呼び出されるたびに、 'filenames.txt'ファイルのファイルパスを追加/変更/削除することができます。 – zwer

+0

どのようにファイルを開くことができますか?たとえば、acespc.c – Ikhwan

関連する問題