Python 加载时,让代码更改终端设置
我有一个程序要求我在运行代码之前输入Python 加载时,让代码更改终端设置,python,windows,cmd,windows-console,Python,Windows,Cmd,Windows Console,我有一个程序要求我在运行代码之前输入chcp 65001和set pythoniocodeding=utf-8,否则它无法正确处理字符。有没有办法让代码在打开时自动执行此操作?每次这样做都很痛苦,而且很容易忘记。实际上,您应该能够在Python中这样做,但是假设它的运行时有这个要求,您可以在批处理文件中进行这些设置,然后再使用脚本调用Python。例如,假设此脚本名为pyutf8.bat: @echo off setlocal chcp 65001 set PYTHONIOENCODING=ut
chcp 65001
和set pythoniocodeding=utf-8
,否则它无法正确处理字符。有没有办法让代码在打开时自动执行此操作?每次这样做都很痛苦,而且很容易忘记。实际上,您应该能够在Python中这样做,但是假设它的运行时有这个要求,您可以在批处理文件中进行这些设置,然后再使用脚本调用Python。例如,假设此脚本名为pyutf8.bat
:
@echo off
setlocal
chcp 65001
set PYTHONIOENCODING=utf-8
python %1 %2 %3 %4 %5 %6 %7 %8 %9
然后可以使用以下命令运行脚本:
pyutf8 myscript.py
%1
等是脚本的位置参数。您可以检查是否未提供任何参数,并使用该参数提供默认参数。大概是这样的:
@echo off
setlocal
chcp 65001
set PYTHONIOENCODING=utf-8
if "%1"=="" goto default
python %1 %2 %3 %4 %5 %6 %7 %8 %9
goto :eof
:default
python myscript.py
进一步阅读:
goto:eof
和setlocal
)。下面是一个表,显示了DOS、OS/2和NT中可用的内容。请注意,setlocal
早在80年代就被添加到OS/2中的cmd.exe中,但在NT 4和Windows 2000中进行了扩展。如果您只需要为控制台I/O设置代码页65001,那么您应该改用win\u unicode\u console
包。宽字符控制台API对于输入和输出都一直正常工作,可以追溯到NT3.1。OTOH,在旧的代码页API中使用代码页65001不允许在任何版本的Windows中输入非ASCII文本,而且在Windows 8之前的版本中输出时存在严重的错误。