Как создать Py файлы без Windows по умолчанию CRLF? - PullRequest
1 голос
/ 29 апреля 2010

как я могу написать .py файл из python таким образом, чтобы его тип не был похож на 'ASCII файл с Windows CRLF'

потому что, когда я запускаю file.write(data) в Windows, он пишет файл, но когда я пытаюсь eval(open(file.py).read()) происходит сбой и выдает синтаксическую ошибку из-за Windows CRLF в каждой строке ......

см. Журнал ошибок - traceback

ERROR:web-services:[25]:     info = eval(tools.file_open(terp_file).read(-1))
ERROR:web-services:[26]:   File "<string>", line 1
ERROR:web-services:[27]:     {
ERROR:web-services:[28]:

Ответы [ 4 ]

1 голос
/ 29 апреля 2010

Вы можете:

  1. Запишите файл в двоичном режиме, открыв его с помощью open(file, 'wb') или ...
  2. Уберите CR-LF из строки перед тем, как написать что-то вроде data.replace('\r','')

Я бы держался подальше от exec и использовал бы execfile , как упомянуто SilentGhost .

1 голос
/ 29 апреля 2010

Я думаю, вы ищете функцию execfile.

1 голос
/ 29 апреля 2010

Проблема не в CRLF, а в том, что eval предназначен для вычисления одного выражения, а не всей программы.

Вы можете использовать exec, чтобы выполнить программу из строки, или execfile, чтобы выполнить ее непосредственно из файла.

Чтобы ответить на ваш исходный вопрос, вы можете не писать CRLF, открыв файл в двоичном режиме: f = open(filename, 'wb')

0 голосов
/ 29 апреля 2010

Просто откройте файл в двоичном режиме: open("myfile.py", "rwb")

...