如何判断哪个控制台打开了脚本?

时间:2014-11-26 21:38:06

标签: python encoding console

我尝试编写一个简单的日志记录脚本,该脚本要求输入文本,然后将输入以及日期和时间保存到新的文本文件中(或将其附加到现有文件中)。问题是,IDLE GUI控制台(或它所称的)使用我的默认语言环境编码(Windows 1250),但是当我通过从文件浏览器执行它来启动脚本时,它会在默认的Win shell中打开,它使用CP852编码。我已经通过在输出之前将输入转换为unicode而不是cp1250来解决这个问题,但是如果我想同时使用这两个控制台呢?有没有办法告诉他们彼此?也许添加一个条件,如果它是来自Win Shell的输入,则使用cp852转换字符串,如果不是,则添加cp1250?

很抱歉,如果帖子太复杂,我在Windows 7 64bit上使用捷克语本地化运行32位Python 2.7.5。

这是我正在运行的代码:

#!/usr/bin/python
# -*- coding: cp1250 -*-

import time
import datetime

ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')

print u'It is %s right now. What\'s up?' %st

string = unicode(raw_input(), 'cp852')

string_output = string.encode('cp1250', 'replace')

with open('log_2.txt', 'a') as log:
    log.write(st+'\n')
    log.write(string_output+'\n\n')

raw_input('Press Enter to exit')

感谢您就该主题提出任何建议。

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法获取编码:

  • sys.stdout.encoding将为您提供标准输出的编码
  • sys.stdin.encoding将为您提供标准输入的编码。