我希望我的程序在stderr连接到控制台和重定向到文件/管道之间有不同的行为。在Unix系统中,我只能测试isatty(STDERR_FILENO)
,但我如何在Windows中执行此操作? MSVCRT还有一个名为_isatty
的函数,它无法正常运行(例如,Detect NUL file descriptor (isatty is bogus))。我可以调用任何Windows或NT API来测试它吗?
答案 0 :(得分:3)
import requests
def put_file(credentials, local_file_name):
"""This function writes file content to Object Storage V3 """
url1 = ''.join(['https://identity.open.softlayer.com', '/v3/auth/tokens'])
data = {'auth': {'identity': {'methods': ['password'],
'password': {'user': {'name': credentials['name'],'domain': {'id': credentials['domain']},
'password': credentials['password']}}}}}
headers = {'Content-Type': 'text/csv'}
with open(local_file_name, 'rb') as f:
resp1 = requests.post(url=url1, data=f, headers=headers)
return resp1
获取stderr句柄。GetStdHandle
,以找出它是什么类型的文件。GetFileType
,则stderr可以是控制台,但请调用FILE_TYPE_CHAR
进行检查。 GetConsoleMode
失败,则stderr已重定向到另一个角色设备,例如打印机。 答案 1 :(得分:0)
对我来说,最简单的方法是使用fseek(stderr, 0, SEEK_CUR)
,如果将0
重定向到某个文件则会返回stderr
,如果<>0
不是stderr
则会identifiers
重定向。