Python under PowerShell adds characters
Jay Braun
lyngwyst at gmail.com
Wed Mar 29 13:42:25 EDT 2017
On Wednesday, March 29, 2017 at 10:28:58 AM UTC-7, eryk sun wrote:
> On Wed, Mar 29, 2017 at 4:06 PM, <lyngwyst at gmail.com> wrote:
> > I wrote a Python script, which executed as intended on Linux and
> > from cmd.exe on Windows. Then, I ran it from the PowerShell
> >command line, all print statements added ^@ after every character.
>
> ISE is the only command-line environment that's specific to
> PowerShell. Surely you wouldn't be running Python scripts in ISE.
>
> If powershell.exe is run normally, then it's a console application.
> python.exe would inherit the console handle, and that's the end of its
> interaction with PowerShell. At most PowerShell (or any process that's
> attached to the console) may have set the console to a different
> output codepage via SetConsoleOutputCP or set the mode on the screen
> buffer via SetConsoleMode. As far as I know, neither of these can make
> the console print "^@" as a representation of NUL. It only shows "^@"
> in the input buffer when you type Ctrl+2, which is what most terminals
> do. For example:
>
> >>> s = sys.stdin.read(6)
> spam^@
> >>> s
> 'spam\x00\n'
> >>> print(s)
> spam
I'm not using ISE. I'm using a pre-edited script, and running it with the python command.
Consider the following simple script named hello.py (Python 2.7):
print "Hello"
If I enter:
python hello.py > out.txt
from cmd.exe I get a 6-character file (characters plus new-line).
from PowerShell I get an extract ^@ character after every character
j
More information about the Python-list
mailing list