繁体   English   中英

Python:从子和打印返回值返回'None'

[英]Python: returning 'None' from a sub and printing return value

我在下面的python脚本返回一个变量,该变量可以是None或从文件读取的blob数据。 我认为这将是一种确定三种状态之一的简单方法:

  • 任何错误都返回None
  • 空数据返回一个空变量
  • 成功读取返回变量中的数据

这(也在下面)是我得到的错误。 我可以只为data而不是None分配""并测试一个空变量,但这看起来有点俗气。 打印包含在str()的变量可能会起作用,但每次我想打印变量时,这似乎都需要额外的输入(或打印变量的特殊功能)。 我必须在这里离开基地。

$ ./foo.py 
Traceback (most recent call last):
  File "./foo.py", line 20, in <module>
    print " data read was " + line_read
TypeError: cannot concatenate 'str' and 'builtin_function_or_method' objects

码:

#!/usr/bin/python
import sys, os

def get_data (src):
   data = None

   if os.path.isfile (src):
      with open(src, 'rt') as f:
         data = f.read

   return data


line_read  = get_data('foo.txt')

if line_read is None:
   print "no data in file"
   sys.exit(1)

print " data read was " + line_read

看来问题是你正在使用f.read Python支持高阶编程,实质上允许您将函数/方法分配给变量。 那么,你是从返回get_data基本上是不能用一个字符串,它是你所得到的错误串接功能,所以要解决这个问题调用方法read如下:

#!/usr/bin/python
import sys, os

def get_data (src):
   data = None

   if os.path.isfile (src):
      with open(src, 'rt') as f:
         data = f.read() # this will solve your problem

   return data


line_read  = get_data('foo.txt')

if line_read is None:
   print "no data in file"
   sys.exit(1)

print " data read was " + line_read

您刚刚将变量data分配给具有该data = f.read调用的方法,您应该实际调用该方法:

data = f.read()

您应该从调用函数的任何位置添加括号。 在您的程序中, f.read()是一个函数,但您将其键入为f.read会导致错误。 解决方案是用f.read() 替换 f.read

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM