omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Can I rename the current file using a workflow?

    Editorial
    4
    5
    3619
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • whyzee
      whyzee last edited by

      Hi. I'm completely loving Editorial 1.1. And I'm having fun experimenting with workflows. But I'm not such a savvy python coder... Here is a particular workflow I'm struggling with:

      What I'd like to do is rename the current file (stored in dropbox) with an additional prefix. For instance, if the current dropbox file is named "my-document.txt", I'd like to change it to "archive-my-document.txt". Is this possible? To rename the current document?...

      I'm thinking I'd use os.rename(src,dst) but I'm not sure what to plug in for the current filename. Do I want the entire path name or just relative to the root dropbox folder? Would I use editor.get_path() or os.path.basename(editor.get_path()) or the "Get Current File Name" action? None of this seems to work so far.

      Can anyone help me figure out the code (or actions) necessary to get the correct filename in order to rename it?

      Thanks!

      1 Reply Last reply Reply Quote 0
      • blmacbeth
        blmacbeth last edited by

        Being intrigued by your question I looked through some API and found this entry:


        editor.set_file_contents(name, new_contents[, root])
        Writes new data to the file with the given name (a relative path). If a file with this name exists, it is overwritten.

        Note that new_contents is a byte string, which means that you can also use this to write binary files (such as images), but if you write non-ASCII text, you have to encode it yourself.

        root can be either ‘local’ or ‘dropbox’. ‘local’ is the default.


        You can grab the exact and relative paths from the editor module and this may be what you are looking for.

        Hope this helps :)

        1 Reply Last reply Reply Quote 0
        • whyzee
          whyzee last edited by

          Oh. Cool. That didn't occur to me. Thanks. Plus, I see there are actually actions for "get file contents" and "set file contents". I don't have my iPad with me right now but I think this could work:

          (Action) Get current file name -> Set variable

          (Action) Get file contents -> Set variable

          (Action) Set file contents (with new file name)

          (Action) Open new file

          (Python) Delete old file

          Thanks for the feedback.

          1 Reply Last reply Reply Quote 0
          • martynsays
            martynsays last edited by

            @whyzee I'm not able to delete a file. This is the error I get when I try to do this:

            Here's my Python script:

            #coding: utf-8
            import workflow
            import os
            
            os.remove(workflow.get_variable('old_file'))
            

            The old_file variable is derived from File Name.File Extension. The actual name is correct but the path is what's wrong (I'm pretty sure). Here's the console error I get when I try to run this.

            Traceback (most recent call last):
              File "/var/mobile/Containers/Data/Application/<ID>/Library/Application Support/Commands/workflow_action_tmp.py", line 5, in <module>
                os.remove(workflow.get_variable('old_file'))
            OSError: [Errno 2] No such file or directory: 'Untitled.md'
            

            Have you successfully gotten file deleting to work in Editorial? I'm wondering if it's programmatically possible...

            1 Reply Last reply Reply Quote 0
            • ccc
              ccc last edited by

              You can os.listdir('.') to see if the file is in the Current Working Directory.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post
              Powered by NodeBB Forums | Contributors