2016-06-04 5 views
3

Я запускаю простой: echo print "Hello!!" > prog.py на PowerShell (PS). Все было хорошо, пока я не установил .py программы, которые будут выполняться по умолчанию с IDLE.bat. Как только я это сделал, когда я набираю .\prog.py, PowerShell запускает Idle, поэтому у меня была «блестящая идея», чтобы установить .py для работы с PS. Я установил Idle снова как программу по умолчанию для .py, но теперь я не могу создать файлы .py с PS, и я замечаю, что он вставляет символы, возврат каретки между print и Hello и пробелы между всеми буквами. Как это:Запуск .py в PowerShell

ÿþp r i n t 

H e l l o 

Запуск python prog.py Я получаю SyntaxError, как это:

PS C:\> python prog.py 
    File "prog.py", line 1 
SyntaxError: Non-ASCII character '\xff' in file prog.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 

ли PS потерять кодировку? Как я могу это решить?

Я использую Win10 (PSv5.0); Python 2.7.11

+0

Я не могу ответить на ваш вопрос, но почему вы хотите, чтобы создавать свои программы таким образом? Не могли бы вы просто написать свои сценарии .. нормально? – syntonym

ответ

1

ÿþ - знак байтового заказа. Вы смотрите на Windows Unicode, который является UCS-2 LE или UTF-16, который является общим форматом кодировки, используемым .NET Framework. «Пробелы» происходят, потому что Python не интерпретирует файл как кодированный с многобайтовыми символами, что и есть.

Попробуйте указать кодировку в явном виде:

Write-Output 'print "Hello World!!"' | Out-File -FilePath .\prog.py -Encoding ascii 
+0

'-Path' не был доступен для меня в PowerShell 5.0, но я нашел, что это работает для меня в Python 3.5,« Write-Output »print (« Hello !! ») '| Out-File -FilePath. \ Prog.py -Encoding ascii' Не уверен, что скобка нужна в Python 2.7 в случае ситуации OP. –

+0

@BoogaRoo О, извините. Это '-FilePath', а не' -Path'. Darn несогласованные имена параметров! –

+0

Не беспокойтесь. Ваш ответ вызвал мой интерес, так что я пошел и установил Python! –

Смежные вопросы