2014-12-09 4 views
0

Я пытаюсь создать редакторский рабочий процесс, чтобы удалить шесть первых символов каждой строки в файле.Редакционная iOS: удалять первые символы в каждой строке

В настоящем время, я построил новый worklfow составленного три этапа:

  1. Получить выделенный текст
  2. Пользовательского Python скрипт
  3. Заменить выделенный текст

Моего Python скрипт :

#coding: utf-8 
import workflow 

action_in = workflow.get_input() 

text = open("temp.txt", "w+") 
text.write(action_in) 

lines = text.readlines() 
for line in lines: 
    text.write(line[6:]) 

action_out = text.read() 
workflow.set_output(action_out) 

Фактически, когда я пытаюсь использовать этот рабочий процесс на линии, он просто удаляет его.

Как мне это сделать?

Заранее спасибо.

ответ

0

Я подозреваю, что проблема заключается в том, что вам нужно закрыть «temp.txt», а затем снова открыть его. Это работает для меня:

import workflow 

action_in = workflow.get_input() 

text = open("temp.txt", "w+") 
text.write(action_in) 
text.close() 

text = open("temp.txt", "r") 
lines = text.readlines() 
text.close() 

text = open("temp.txt", "w+") 
for line in lines: 
    text.write(line[6:]) 
text.close() 

text = open("temp.txt", "r") 
action_out = text.read() 
workflow.set_output(action_out) 

«ш +» в ваш первоначальный «открыть» оператор удаляет файл и открывает его для чтения/записи; однако указатель файла будет следовать за записью. Самый безопасный метод заключается в том, чтобы закрыть файл по завершении и повторно открыть его, чтобы сбросить указатель файла и получить нужные данные.

Поскольку вы используете w +, вы также можете использовать .seek() для перестановки указателя файла, в зависимости от кеширования, однако, если ваш контур вам нужен, нет необходимости открывать временный файл для выполнения этого действия.

import workflow 

action_in = workflow.get_input() 

lines = [] 
for line in action_in.split("\n"): 
    lines.append(line[6:]) 

action_out = "\n".join(lines) 
workflow.set_output(action_out) 
Смежные вопросы