2016-06-15 16 views
0

Ich habe 385 Unterordner in einem Verzeichnis, von denen jedes eine CSV-Datei zusammen mit mehreren PDFs enthält. Ich versuche, einen Weg zu finden, jeden Unterordner zu durchsuchen und eine Liste der PDFs in eine TXT-Datei zu schreiben. (Ich weiß, es gibt bessere Sprachen als Ruby, aber ich bin neu in der Programmierung und es ist die einzige Sprache, die ich kenne.)Ruby - Schreiben von Dateinamen aus Unterordnern in eine TXT-Datei

Ich habe Code, der die Arbeit erledigt, aber das Problem, das ich bin Running in es ist auch das Unterordner Verzeichnis aufgelistet. Beispiel: Anstatt "document.pdf" in eine Textdatei zu schreiben, wird "subfolder/document.pdf" geschrieben.

Kann mir bitte jemand zeigen, wie man nur den PDF-Dateinamen schreibt?

Vielen Dank im Voraus! Hier ist mein Code:

class Account 
    attr_reader :account_name, :account_acronym, :account_series 
    attr_accessor :account_directory 

    def initialize 
    @account_name = account_name 
    @account_series = account_series 
    @account_directory = account_directory 
    end 

    #prompts user for account name and record series so it can create the directory 
    def validation_account 
    print "What account?" 
    account_name = gets.chomp 
    print "What Record Series? " 
    account_series = gets.chomp 
    account_directory = "c:/Processed Batches Clone/" + account_name + "/" + account_series + "/Data" 
    puts account_directory 
    return account_directory 
    end 
end 

processed_batches_dir = Account.new 

#changes pwd to account directory 
Dir.chdir "#{processed_batches_dir.validation_account}" 

# pdf list 
processed_docs = [] 

# iterates through subfolders and creates list 
Dir.glob("**/*.pdf") { |file| 
    processed_docs.push(file) 
    } 

# writes list to .txt file 
File.open("processed_batches.txt","w") { |file| 
    file.puts(processed_docs) 
    } 
+0

Das ist lustig, Ihr Kommentar zu Rubin. Ich habe seit Jahrzehnten programmiert und habe mindestens ein Dutzend Sprachen verwendet, und ich würde jedem neuen Programmierer empfehlen, mit Ruby zu beginnen! Das mag ich am Liebsten. –

Antwort

0

Es kann eine bessere Art und Weise sein, aber man konnte immer split auf dem letzten Schrägstrich im Pfad:

Dir.glob('**/*.pdf').each do |file_with_path| 
    processed_docs.push(file_with_path.split('/').last) 
end 
Verwandte Themen