LINUX.ORG.RU

Перенос файла python-программы c Win7 на Linux(Ubuntu 12.04)

 , , , ,


1

1

Проблема: В Win7 {в блокноте} написан python-скрипт, сохранен в кодировке utf-8 под названием test.py Файл перенесен на Linux, открывается корректно, русские символы отображаются. Назначаются права на запуск программы. Запуск -> программа не работает{в терминале много ошибок - исчезает быстро(запомнить не удалось), создается файл sys,курсор становится в виде плюса}. Та же самая программа набранная в Linux (gedit) и сохраненная в utf-8 под названием test.py, при назначении ей прав на запуск, запускается и работает корректно.

Мнение: Думаю проблема в кодировке файла разными системами. Задача решается тривиально, если файл в Win7 сохранен в windows-1251(ANSI), методом dos2unix.

Вопрос: Как корректно переконвертировать код python-программы из utf-8 (win7) в utf-8(Ubuntu), чтобы она, назначив ей права на запуск, работала корректно???

Нюанс: Исходных файлов много (прибл 700 штук), прошу помочь решить задачу с минимальными «телодвижениями» для каждого файла. Если поможете составить грамотно bash-скрипт для автоматизации этого всего, буду очень вам признателен.

я начинающий пользователь linux.

Заранее всех благодарю.



Последнее исправление: cetjs2 (всего исправлений: 1)

запомнить не удалось

ugh :(

Запусти из терминала и сохрани выхлоп на пастбин.

cdshines ★★★★★
()

find -name *py -exec sed -i 's/\r//' {} +

Не проверял. Перед запуском на реальных файлах проверьте на тестовом наборе.

AITap ★★★★★
()

Вам, что, нужна команда dos2unix для преобразования символов перевода строки?

mky ★★★★★
()

Виндузятникам помощь в виндузятском стиле:

Открыть в geany -> Документ -> Установить окончания строк -> Заменить окончания строк на LF (Unix) -> Фаил -> Сохранить

Siado ★★★★★
()
Последнее исправление: Siado (всего исправлений: 1)
Ответ на: комментарий от i_gnatenko_brain

Ванную конец строки не юниксовый.

Две ванных этому комраду.

anonymous
()

Ты еще признаки конца строк поправить забыл.

LongLiveUbuntu ★★★★★
()

Питон срать хотел на конец строк.

создается файл sys

У тебя скрипт без shebang'а. Допиши вначале файла (на первой строке):

#!/usr/bin/env python

Остальные модули трогать не надо, если они конечно не должны быть исполняемыми.

// Ладно ТС, с вопросом пришел, но советчики, одно ламерье пузатое, всё последний мой пост на ЛОРе, заебало.

anonymous
()
Ответ на: комментарий от anonymous

Когда проспишься перечитай ТС, особенно вот эту часть:

Задача решается тривиально, если файл в Win7 сохранен в windows-1251(ANSI), методом dos2unix.

неужели семёрочка научилась дописывать ше-банг?

Скорее всего ше-банг у ТС в файлах есть, но он с CR LF, отчего все проблемы и идут, поэтому эту строку нужно не дописывать, а редактировать её окончание.

anonymous
()
Ответ на: комментарий от mky

если честно, я не знаю что мне нужно (в смысле какой инструмент).

proximo9
() автор топика
Ответ на: комментарий от anonymous

спасибо. у меня путь к интерпретатору в начале скрипта прописан: #!/usr/bin/env python3

proximo9
() автор топика
Ответ на: комментарий от anonymous

Да, вы правы. Насчет dos2unix написал, не проверив.

proximo9
() автор топика
Ответ на: комментарий от Siado

Открыл в Geany, заменил окончания строк, сохранил, назначил права на запуск, не работает. Может еще что-то поправить нужно? кроме окончания файлов

proximo9
() автор топика
Ответ на: комментарий от Siado

Да. Проблему удалось устранить. После смены окочания строк на Unix-вариант в Geany, открыл и посмотрел файл в hexdump -cb. Перед строкой #!/usr/bin/env python3 обнаружил код неизвестного символа - удалив в начале файла этот символ, файл запустился корректно.

Всем большое спасибо за помощь! =)

proximo9
() автор топика
Ответ на: комментарий от proximo9

обнаружил код неизвестного символа

Это юникодный zero-width non-breaking space. Служит в качестве BOM. Виндовый софт любит ставить его в utf-8 файлах при том, что он не нужен там.

https://duckduckgo.com/?q=linux remove bom utf-8 если понадобится решение.

x3al ★★★★★
()
Ответ на: комментарий от proximo9

После смены окочания строк на Unix-вариант в Geany, открыл и посмотрел файл в hexdump -cb.

Есть такая программа — diffuse. В ней удобно сравнивать почти одинаковые текстовые файлы между собой. Различия между файлами сразу видно, так как они раскрашены в разные цвета.
Для сравнения в бинароном режиме можно применить vbindiff.

justAmoment ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.