首页 > 解决方案 > z/OS 大型机上 USS 中的 Python 代码 - 方括号无法识别

问题描述

我正在尝试在 z/OS Mainframe USS 上执行以下 python 代码。我面临的问题是,当我运行代码时,我收到以下错误消息。我的代码中似乎无法识别方括号。

  File "/u/q123/python/pyfilr.py", line 11
    print(lineï..0:4ï..)                   
              ¬                            
SyntaxError: invalid syntax 

下面是我的代码:

#!/usr/local/bin/rocket/python/python27                                 
# -*- coding: utf-8 -*-                                                 
import os                                                               
import json                                                             
def main():                                                             
    curpath = os.path.abspath(os.curdir)                                                      
    inp_file_path = os.path.join(curpath, os.path.join("python","inp.txt")
    file1 = open(inp_file_path,"r") 
    line = file1.readline().strip() 
    while line!="":
        print(line[0:4])
        jsonstr = json.dumps(line)
        line = file1.readline().strip()
        print(jsonstr)
    file1.close()
if __name__ == "__main__":
    main()   

如果我在我的代码中删除第二行“# - - coding: utf-8 - -”,那么它会因以下错误消息而出错。

SyntaxError: Non-ASCII character '\xdd' in file /u/q123/python/pyfilr.py on line 11, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

我不确定如何解决该错误。我正在使用python 2.7。

你能建议一个解决这个问题的方法,以便我可以在我的代码中使用方括号吗?

标签: pythonzos

解决方案


Ascii 非常深入地内置于 Python 中,这是 z/OS 上的一个问题,它本机支持 EBCDIC。您可以使用 chtag 命令告诉 z/OS 将文件视为特定编码。要查看文件是否已被标记,您可以发出命令

ls -T <filename>

要标记文件,您可以发出命令

chtag -tvc UTF-8 <filename>

我建议删除文件,触摸一个空文件,对其进行标记,然后将内容放入其中,而不仅仅是标记文件。


推荐阅读