Задача Ant для выполнения целевого объекта Ant, только если файл существует?

(В этом ответе я предполагаю, что вы используете Python 2.)

Сначала позвольте мне объяснить, почему ваш фрагмент кода возвращает что-то другое, чем вы ожидаете:

r1 = json.dumps({"detalle":"el Expediente N\u00b0\u00a030 de la Resoluci\u00f3n 11..."}, ensure_ascii=False).encode('utf8')
print(r1)
r2 = json.dumps({"detalle":u"el Expediente N\u00b0\u00a030 de la Resoluci\u00f3n 11..."}, ensure_ascii=False).encode('utf8')
print(r2)

Это выводит :

{"detalle": "el Expediente N\\u00b0\\u00a030 de la Resoluci\\u00f3n 11..."}
{"detalle": "el Expediente N° 30 de la Resolución 11..."}

Разница заключается в том, что в первом случае входная строка представляет собой код ascii, с косыми чертами и другими символами для представления специальных символов, а во втором случае строка представляет собой строку Юникода с символы Юникода. Второй случай - это то, что вы хотите.

Исходя из этого, вот что я понимаю из вашей проблемы:

Обычно, когда вы читаете файл JSON с модулем json, строки (которые экранируются в файле JSON) не экранируются парсер. Если вы все еще видите экранированные символы, это означает, что строки (случайно?) Дважды экранированы в файле JSON. В этом случае попробуйте дополнительный unescape с s.decode('unicode-escape'):

data["detalle"] = data["detalle"].decode('unicode-escape')

Как только вы загрузите в Python правильные строки юникода, преобразование их в байты с помощью s.encode('utf8') и запись результата в файл верны . [+1112]

150
задан jevon 8 May 2012 в 11:21
поделиться

3 ответа

Доступный и Условие

<target name="check-abc">
    <available file="abc.txt" property="abc.present"/>
</target>

<target name="do-if-abc" depends="check-abc" if="abc.present">
    ...
</target> 
199
ответ дан toolkit 23 November 2019 в 22:19
поделиться

Это может иметь немного больше смысла с точки зрения кодирования (доступно с ant-contrib: http://ant-contrib.sourceforge.net/):

<target name="someTarget">
    <if>
        <available file="abc.txt"/>
        <then>
            ...
        </then>
        <else>
            ...
        </else>
    </if>
</target>
121
ответ дан 23 November 2019 в 22:19
поделиться

Начиная с Ant 1.8.0, очевидно, также существует ресурс

http://ant.apache.org/manual/Tasks/conditions.html

Проверяет наличие ресурса. поскольку Ant 1.8.0

Фактический ресурс для тестирования: указан как вложенный элемент.

Пример:

 
 

Я собирался переработать пример из приведенного выше хорошего ответа на этот вопрос, а затем я нашел это

Начиная с Ant 1.8.0, вы можете вместо этого использовать расширение собственности; значение истины (или on или yes) включит элемент, в то время как false (или выключено или нет) будет отключи это. Остальные ценности по-прежнему предполагается, что это имена свойств, и поэтому элемент доступен только в том случае, если названный свойство определяется.

По сравнению со старым стилем, этот дает дополнительную гибкость, потому что вы можете переопределить условие из командной строки или родительского сценарии:

 
 


 


из руководства по муравью на http://ant.apache.org/manual/properties.html#if+unless

Надеюсь, этот пример кому-то пригодится. Они не используют resourceexists, но, предположительно, вы могли бы? .....

26
ответ дан 23 November 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: