File name: some_random_report.2008-06-20.csv
I know which folder this file will be in, I just don't know what the
exact file name is. It should look similar to what I have above, except
everyday the date could be different. How would I search the folder for
the file? Also, I want my program to be able to open a new document
called "File name_extra.txt". How do I capture the File name into a
string, once I've figured out which file to open in the first place?
Thanks!!
···
--
Posted via http://www.ruby-forum.com/.
this should get you started
folder_name = "/path/to/folder"
reports = Dir["#{folder_name}/some_random_report*.csv"]
Dir uses file globbing, not regexp matching. If you want the latter,
try Dir["#{folder_name}/*.csv"].grep(/pattern/)
martin
···
On Fri, Jun 20, 2008 at 11:30 AM, Justin To <tekmc@hotmail.com> wrote:
File name: some_random_report.2008-06-20.csv
Dir::glob is a bit more powerful than Dir::, and it can take a
block, to which the filename gets passed. ri Dir::glob has pretty
comprehensive documentation on this.
Dir.glob("/path/to/files/*.*-*-*.csv") do |filename|
File.open("name_extra.txt", "w+") do |file|
file.puts filename
end
end
But if you need to mangle the filename, then, as Martin said, you can
run a regexp on the string once you have it.
···
2008/6/20 Justin To <tekmc@hotmail.com>:
File name: some_random_report.2008-06-20.csv
I know which folder this file will be in, I just don't know what the
exact file name is. It should look similar to what I have above, except
everyday the date could be different. How would I search the folder for
the file? Also, I want my program to be able to open a new document
called "File name_extra.txt". How do I capture the File name into a
string, once I've figured out which file to open in the first place?
Thanks!!
--
Posted via http://www.ruby-forum.com/\.
--
JJ
Thanks for the detailed explanation Bryan. I've figured out how to use
it now, but I'm still stuck on how to check for the latest file:
For instance,
some_file.2008-06-02.csv
some_file.2008-06-03.csv
Now I want to traverse the folder and open up the latter file. If it is
a viable solution, is there a command that returns the most recent file
with the name pattern "some_file.\d{4}-\d{2}-\d{2}.csv"
Thanks so much!
···
--
Posted via http://www.ruby-forum.com/.
Hmm, well they're named nicely, so you can probably do something like
File.open(Dir['some_file.*.csv'].sort.last) do |f|
puts f.read # print out the contents of f
end
if you're confident that the dates in the names are accurate.
If you want to be more pedantic, you can check by the file's ctime
(which is when the directory's info for that file was changed) or
mtime (which is when the file itself was last changed.
latest = Dir['some_file.*.csv'].sort_by { |f| File.ctime(f) }.last
(Use Dir.glob instead if you need to). That's basically just sorting
the filenames based on the file's timestamp (ascending), and taking
the last one.
JJ
···
2008/6/21 Justin To <tekmc@hotmail.com>:
Thanks for the detailed explanation Bryan. I've figured out how to use
it now, but I'm still stuck on how to check for the latest file:
For instance,
some_file.2008-06-02.csv
some_file.2008-06-03.csv
Now I want to traverse the folder and open up the latter file. If it is
a viable solution, is there a command that returns the most recent file
with the name pattern "some_file.\d{4}-\d{2}-\d{2}.csv"
Thanks so much!
--
Posted via http://www.ruby-forum.com/\.
--
JJ