wjq0414 发表于 2023-9-1 12:31:00

遇到了一个问题,求大佬帮忙解决下。

Traceback (most recent call last):
File "C:\Users\asus\Desktop\局基金-202318-利用TomoDD方法研究新疆天山中段地壳三维P波速度结构及地震分布特征\USTClitho2.0-main\interpVel.py", line 124, in <module>
    print >> fid, "%g %d %d %d" % ( bld, nxi, nyi, nzi )
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?

用Pycharm运行一个程序,给我提示这个,咋解决呀。!!!!

isdkz 发表于 2023-9-1 12:31:19

这个错误是由于在Python 3中,print函数的语法有所改变导致的。在Python 2中,我们可以使用 print >> fid, "%g %d %d %d" % ( bld, nxi, nyi, nzi ) 这样的语法将输出写入到文件中。然而,在Python 3中,这种语法是不再支持的。

要解决这个问题,您可以使用Python 3的新语法,将输出写入到文件中。您可以使用 print("%g %d %d %d" % (bld, nxi, nyi, nzi), file=fid) 来实现相同的功能。这样,输出将被写入到指定的文件中。

所以,您需要将代码中的这一行:
print >> fid, "%g %d %d %d" % ( bld, nxi, nyi, nzi )

修改为:
print("%g %d %d %d" % (bld, nxi, nyi, nzi), file=fid)


这样修改后,您的代码应该能够在Python 3中正常运行了。

wjq0414 发表于 2023-9-1 13:29:34

谢谢大佬

wjq0414 发表于 2023-9-1 13:34:55

isdkz 发表于 2023-9-1 12:31
这个错误是由于在Python 3中,print函数的语法有所改变导致的。在Python 2中,我们可以使用 print >> fid,...

谢谢呀,大佬,是不是相应的问题都可以这么解决,然后我这边还有好多这种的,您能加我下不,我想问您几个小小的问题,
        for i in range(nxi):
                print >> fid, "%g" % ( xi ),
        print >> fid, ""

        for j in range(nyi):
                print >> fid, "%g" % ( yi ),
        print >> fid, ""

        for k in range(nzi):
                print >> fid, "%g" % ( zi ),
        print >> fid, ""

        for k in range(nzi):
                for j in range(nyi):
                        for i in range(nxi):
                                print >> fid, "%.3f" % ( vp ),
                        print >> fid , ""
        for k in range(nzi):
                for j in range(nyi):
                        for i in range(nxi):
                                print >> fid, "%.3f" % ( vp/vs ), ;
                        print >> fid , ""
        fid.close()

就是里面有好多的这种,我蠢得不会改emmmm,您能教我下不
页: [1]
查看完整版本: 遇到了一个问题,求大佬帮忙解决下。