<div dir="ltr"><div>You're right, app functions automatically created the output folders - write() didn't - it was a bit inconsistent.<br><br></div>- Tim<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 16 April 2015 at 11:32, Ozik, Jonathan <span dir="ltr"><<a href="mailto:jozik@anl.gov" target="_blank">jozik@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word">
Thanks Tim, this will do the trick.
<div>I thought I was seeing that in some situations the necessary folders were being created but not in others. I could be wrong though.</div><span class="HOEnZb"><font color="#888888">
<div><br>
</div>
<div>Jonathan</div></font></span><div><div class="h5">
<div><br>
<div>
<blockquote type="cite">
<div>On Apr 15, 2015, at 9:05 PM, Tim Armstrong <<a href="mailto:tim.g.armstrong@gmail.com" target="_blank">tim.g.armstrong@gmail.com</a>> wrote:</div>
<br>
<div>
<div dir="ltr">
<div>I think the problem is just that the directories the file is in isn't automatically created by write.  It probably would make sense for it to, so I'm checking in a fix to that.<br>
<br>
</div>
As a workaround you could just do a mkdir before you use the directory:<br>
<div><br>
<span style="font-family:monospace,monospace">import io;<br>
import sys;<br>
import files;<br>
<br>
main<br>
{<br>
    string upf_file_name = argv("f"); // e.g., -f="upf.txt"<br>
    string upf_lines[]  = file_lines(input(upf_file_name));<br>
    foreach s,i in upf_lines<br>
    {<br>
      string instance_dir = strcat(strcat("instance_",fromint(i)),"/");<br>
<br>
      my_mkdir(instance_dir) =><br>
      {<br>
        file out <strcat(instance_dir,"out.txt")>;<br>
        file err <strcat(instance_dir,"err.txt")>;<br>
        file tmp <strcat(instance_dir,"upf.txt")> = write(s);<br>
      }<br>
    }<br>
}<br>
<br>
app (void o) my_mkdir(string dirname) {<br>
  "mkdir" "-p" dirname;<br>
}<br>
</span><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 15 April 2015 at 20:03, Ozik, Jonathan <span dir="ltr">
<<a href="mailto:jozik@anl.gov" target="_blank">jozik@anl.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello all,<br>
<br>
I’m wondering if I’m seeing an unintended file I/O race condition or if I’m simply doing something wrong but I’m getting errors when trying to execute this script using trunk:<br>
<br>
swift-t -n 4 very_simple.swift -f=upf_small_3.txt<br>
(where upf_small_3.txt is a file with 3 lines)<br>
<br>
##### very_simple.swift #####<br>
import io;<br>
import sys;<br>
import files;<br>
<br>
main<br>
{<br>
    string upf_file_name = argv("f"); // e.g., -f="upf.txt"<br>
    string upf_lines[]  = file_lines(input(upf_file_name));<br>
    foreach s,i in upf_lines<br>
    {<br>
      string instance_dir = strcat(strcat("instance_",fromint(i)),"/");<br>
<br>
      file out <strcat(instance_dir,"out.txt")>;<br>
      file err <strcat(instance_dir,"err.txt")>;<br>
      file tmp <strcat(instance_dir,"upf.txt")> = write(s);<br>
    }<br>
}<br>
##### very_simple.swift #####<br>
<br>
The errors are:<br>
couldn't open "instance_1/upf.txt": no such file or directory<br>
    while executing<br>
"::open [ local_file_path $local_file ] w+ "<br>
    (procedure "turbine::file_write_local" line 3)<br>
    invoked from within<br>
"turbine::file_write_local v:tmp ${v:s}"<br>
    (procedure "__entry-call_foreign-write" line 5)<br>
    invoked from within<br>
"__entry-call_foreign-write {2  randomSeed      1,zombieStep    0.1,humanStep   0.5,human_count 200,zombie_count        2} instance_1/upf.txt {file 7 is_mapped 1}"<br>
Turbine worker task error in: __entry-call_foreign-write {2     randomSeed      1,zombieStep    0.1,humanStep   0.5,human_count 200,zombie_count        2} instance_1/upf.txt {file 7 is_mapped 1}<br>
    invoked from within<br>
"c::worker_loop $WORK_TYPE($mode) $keyword_args"<br>
    (procedure "standard_worker" line 27)<br>
    invoked from within<br>
"standard_worker $rules $startup_cmd "<br>
    (procedure "enter_mode_unchecked" line 5)<br>
    invoked from within<br>
"enter_mode_unchecked $rules $startup_cmd"<br>
    (procedure "enter_mode" line 5)<br>
    invoked from within<br>
"enter_mode $rules $startup_cmd “<br>
<br>
Jonathan<br>
_______________________________________________<br>
ExM-user mailing list<br>
<a href="mailto:ExM-user@lists.mcs.anl.gov" target="_blank">ExM-user@lists.mcs.anl.gov</a><br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/exm-user" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/exm-user</a><br>
</blockquote>
</div>
<br>
</div>
_______________________________________________<br>
ExM-user mailing list<br>
<a href="mailto:ExM-user@lists.mcs.anl.gov" target="_blank">ExM-user@lists.mcs.anl.gov</a><br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/exm-user" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/exm-user</a><br>
</div>
</blockquote>
</div>
<br>
</div>
</div></div></div>

</blockquote></div><br></div>